1

我想知道是否有一种“简单/快速”的方法可以将字符变量转换为因子。

我知道,可以使用列名制作一个向量,然后使用lapply. 但是,我正在处理一个包含 200 多个变量的大型数据框,因此最好不必在向量中写入 200 多个名称。

我也知道我可以使用lapply,type.convert和来强制整个数据框sapply,但是由于我正在处理时间序列数据,其中有些是分类的,有些是数字的,我对此也不感兴趣。

有什么方法可以在其中使用列号吗?即[ ,2:200]?我尝试了以下方法,但没有任何运气:

df[ ,2:30] <- lapply(df[ ,2:30], type.convert)
sapply(df, factor)

使用上面的解决方案,我仍然需要做多个,但它仍然比编写所有变量名要快。

我也觉得循环可能在这里可用,但我不确定如何写出来,或者它是否是一种方法。

4

2 回答 2

2
df[ ,2:30] <- lapply(df[ ,2:30], as.factor)
于 2018-06-11T19:24:29.340 回答
0

在您编写时,您需要将(全部?)字符变量转换为因子,您可以使用mutate_iffromdplyr

library(dplyr)
mutate_if(df, is.character, as.factor)

有了这个,你只对is.character返回的列进行操作TRUE,所以你不需要担心列的位置或名称。

于 2018-06-11T19:51:03.167 回答