将data.frame列格式从字符转换为factor

我用R语言编程。 我想将data.frame对象( mydf )的某些列的格式(类)从charactor更改为factor。 当我通过read.table()函数读取文本文件时,我不想这样做。 任何帮助,将不胜感激。


嗨,欢迎来到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

这也适用于字符,日期,整数和其他类

既然你是R的新手,我建议你看看这两个网站:

R参考手册:http://cran.r-project.org/manuals.html

R参考卡:http://cran.r-project.org/doc/contrib/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)

说明。 所有数据框都是列表, [用于多值参数的结果同样也是列表,因此循环列表是lapply的任务。 上述分配将创建一组列表,该函数data.frame.[<-应该成功插入数据框, df

另一种策略是仅转换那些唯一项数量少于某个标准的列,比如说少于行数的日志作为示例:

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

如果你想在你已经加载你的数据之后将你的data.frame中的所有字符变量更改为因子,你可以这样做,到一个名为dat的data.frame:

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

这将创建一个向量,标识哪些列是类character ,然后将as.factor应用于这些列。

样本数据:

dat <- data.frame(var1 = c("a", "b"),
                  var2 = c("hi", "low"),
                  var3 = c(0, 0.1),
                  stringsAsFactors = FALSE
                  )
链接地址: http://www.djcxy.com/p/70895.html

上一篇: convert data.frame column format from character to factor

下一篇: Remove an entire column from a data.frame in R