117 votos

convertir los datos.marco columna de formato de carácter factor de

Yo soy de programación en lenguaje R. Me gustaría cambiar el formato (de clase) de algunas de las columnas de mis datos.marco de objeto (mydf) de charactor a factor. No quiero hacer esto cuando estoy leyendo el archivo de texto read.table() función. Cualquier ayuda se agradece.

161voto

Tyler Rinker Puntos 27607

Hola bienvenido al mundo de la 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

Esto también funciona con los personajes, fechas, números enteros y otras clases de

Ya que eres nuevo a R te sugiero que eche un vistazo a estos dos sitios web:

R los manuales de referencia: http://cran.r-project.org/manuals.html

R tarjeta de Referencia: http://cran.r-project.org/doc/contrib/Short-refcard.pdf

73voto

BondedDust Puntos 105234
# To do it for all names
 col_names <- names(df)
# do do it for some names in a vector named 'col_names'
df[,col_names] <- lapply(df[,col_names] , factor)

Explicación. Todos dataframes están listas y los resultados de [ se utiliza con múltiples valores de argumentos del mismo modo son listas, por lo que el bucle sobre las listas es la tarea de lapply. La asignación anterior creará un conjunto de listas que la función data.frame.[<- debe exitosamente palo de vuelta en el dataframe, df

Otra estrategia sería la de convertir sólo las columnas donde el número de elementos es menor que algún criterio, digamos menos que el registro del número de filas como un ejemplo:

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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X