将多个时间序列列强制转换为大型数据帧中的因子

时间:2018-06-11 19:15:14

标签: r time-series large-data coerce

我想知道是否有一个" easy / quick"将字符变量转换为因子的方法。

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

我也知道我可以使用lapplytype.convertsapply强制整个数据框,但是当我处理时间序列数据时,其中一些是绝对的,并且有些是数字,我对此也不感兴趣。

有没有办法在这里使用列号?即[ ,2:200]?我试过以下,但没有运气:

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

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

我也觉得这里可以使用循环,但我不确定如何写出来,或者甚至是一种方法。

2 个答案:

答案 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的列进行操作,因此您无需担心列位置或名称。