(因子)数据帧列的小写

时间:2016-03-13 19:13:45

标签: r

我的格式为data.frame

'data.frame':   244 obs. of  1 variable:
 $ names: Factor w/ 244 levels "ERA","BAKE",..: 1 2 3 4 5 6 7 8 9 10 ...

我用它将它转换为小写:

df$names <- tolower(df$names)

因此我得到了这个:

> str(df)
'data.frame':   244 obs. of  1 variable:
 $ names: chr  "era" "bake" "and" "stock price" ...

如何保持初始data.frame的结构,同时转换为小写?

2 个答案:

答案 0 :(得分:21)

查看tolower的来源(您可以通过在控制台中输入变量名称tolower或输入print(tolower))来执行此操作:

if (!is.character(x)) 
    x <- as.character(x)

您的factor列被强制为character向量。

相反,我相信你想要:

levels(df$names) <- tolower(levels(df$names))

这也更有效,因为我们只需要替换内存中length(levels(df$names))的值,通常比替换nrow(df)值的完整向量小得多。

答案 1 :(得分:1)

如果您只想更改列名,可以尝试以下语法。

colnames(df) <- tolower(colnames(df))