convertir le format de colonne data.frame de caractère en facteur

Je programme en langage R. Je voudrais changer le format (classe) de certaines colonnes de mon object mydf ( mydf ) de caractère à facteur . Je ne veux pas faire cela lorsque je lis le fichier texte par la fonction read.table() . Toute aide serait appréciée.

Related of "convertir le format de colonne data.frame de caractère en facteur"

Bonjour bienvenue dans le monde de R.

 mtcars #look at this built in data set str(mtcars) #allows you to see the classes of the variables (all numeric) #one approach it to index with the $ sign and the as.factor function mtcars$am < - as.factor(mtcars$am) #another approach mtcars[, 'cyl'] <- as.factor(mtcars[, 'cyl']) str(mtcars) # now look at the classes 

Cela fonctionne également pour les caractères, les dates, les entiers et les autres classes

Puisque vous êtes nouveau sur R, je vous suggère de jeter un coup d’œil sur ces deux sites Web:

R manuels de référence: http://cran.r-project.org/manuals.html

R Carte de référence: http://cran.r-project.org/doc/consortingb/Short-refcard.pdf

 # To do it for all names df[] < - lapply( df, factor) # the "[]" keeps the dataframe structure col_names <- names(df) # do do it for some names in a vector named 'col_names' df[col_names] <- lapply(df[col_names] , factor) 

Explication. Toutes les dataframes sont des listes et les résultats de [ used avec plusieurs arguments valorisés sont également des listes. L'affectation ci-dessus créera un ensemble de listes que la fonction data.frame.[< - devrait se réinsérer dans le dataframe, df

Une autre stratégie consisterait à ne convertir que les colonnes dont le nombre d'éléments uniques est inférieur à certains critères, disons moins que le journal du nombre de lignes, par exemple:

 cols.to.factor < - sapply( df, function(col) length(unique(col)) < log10(length(col)) ) df[ cols.to.factor] <- lapply(df[ cols.to.factor] , factor) 

Si vous voulez changer toutes les variables de caractères de votre data.frame en facteurs après avoir déjà chargé vos données, vous pouvez le faire comme ceci, à un data.frame appelé dat :

 character_vars < - lapply(dat, class) == "character" dat[, character_vars] <- lapply(dat[, character_vars], as.factor) 

Cela crée un vecteur identifiant les colonnes qui ont un character de classe, puis applique as.factor à ces colonnes.

Données d'échantillon:

 dat < - data.frame(var1 = c("a", "b"), var2 = c("hi", "low"), var3 = c(0, 0.1), stringsAsFactors = FALSE ) 

Vous pouvez également utiliser un tube ( %<>% ) du package magrittr . Il convertit la colonne de caractères moncolonne en facteur.

 library(magrittr) mydf$mycolumn %<>% factor 

Je le fais avec une fonction. Dans ce cas, je ne ferai que transformer des variables de caractères pour prendre en compte:

 for (i in 1:ncol(data)){ if(is.character(data[,i])){ data[,i]=factor(data[,i]) } } 

Vous pouvez utiliser dplyr::mutate_if() pour convertir toutes les colonnes de caractères ou dplyr::mutate_at() pour sélectionner les colonnes de caractères nommées en facteurs:

 library(dplyr) # all character columns to factor: df < - mutate_if(df, is.character, as.factor) # select character columns 'char1', 'char2', etc. to factor: df <- mutate_at(df, vars(char1, char2), as.factor)