L'application de gsub à différentes colonnes
Quel est le moyen le plus efficace d'appliquer gsub
à différentes colonnes?
Le code suivant ne fonctionne pas
x1=c("10%","20%","30%")
x2=c("60%","50%","40%")
x3 = c(1,2,3)
x = data.frame(x1,x2,x3)
per_col = c(1,2)
x = gsub("%","",x[,per_col])
Comment puis-je la plus efficace de déposer le signe ' % ' dans les colonnes spécifiées.
Puis-je l'appliquer à l'ensemble du dataframe? Ce serait utile dans le cas où je ne sais pas où le pourcentage des colonnes.
OriginalL'auteur Richard | 2014-05-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
apply
de l'appliquer à l'ensemble des données.cadreapply()
renvoie une matrice et non undata.frame
.OriginalL'auteur docendo discimus
Ou, vous pouvez essayer de le
lapply
solution:comme.les données.cadre(lapply(x[c('x1','x2')], function(y) gsub("%", "", y))) ? Certes, l'. besoin d'un peu de travail pour mettre à jour les colonnes existantes.
Cela semble renvoyer à une colonne de la catégorie "liste" (chaque élément d'une liste de longueur contenant la chaîne de résultat). Est-il possible de revenir à une colonne de l'origine de classe de personnage
OriginalL'auteur info_seekeR
La première réponse fonctionne mais attention, si vous utilisez
data.frame
avec de la ficelle: le @la juste liberté d'enseignement discimus la réponse sera de retourNAs
.Si vous souhaitez conserver le contenu de votre colonne comme une chaîne de caractères il suffit de retirer le
as.numeric
et convertir votre table en un bloc de données après :OriginalL'auteur Simon C.
Pour nettoyer le
%
, vous pouvez le faire:OriginalL'auteur sindri_baldur
À ajouter sur la juste liberté d'enseignement discimus réponse, une extension avec les colonnes adjacentes et en retournant une
data.frame
:OriginalL'auteur bathyscapher