我想知道是否有一个" easy / quick"将字符变量转换为因子的方法。
我知道,可以使用列名创建一个向量,然后使用lapply
。但是,我正在处理一个包含200多个变量的大型数据框,因此最好不要在向量中写入200多个名称。
我也知道我可以使用lapply
,type.convert
和sapply
强制整个数据框,但是当我处理时间序列数据时,其中一些是绝对的,并且有些是数字,我对此也不感兴趣。
有没有办法在这里使用列号?即[ ,2:200]
?我试过以下,但没有运气:
df[ ,2:30] <- lapply(df[ ,2:30], type.convert)
sapply(df, factor)
通过上面的解决方案,我仍然需要做多个,但它仍然比编写所有变量名更快。
我也觉得这里可以使用循环,但我不确定如何写出来,或者甚至是一种方法。
答案 0 :(得分:2)
df[ ,2:30] <- lapply(df[ ,2:30], as.factor)
答案 1 :(得分:0)
在编写时,您需要将(所有?)字符变量转换为因子,您可以使用mutate_if
中的dplyr
library(dplyr)
mutate_if(df, is.character, as.factor)
使用此功能,您只能对is.character
返回TRUE
的列进行操作,因此您无需担心列位置或名称。