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

Coercing multiple time-series columns to factors in large dataframe

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

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

我也知道我可以通过使用 lapplytype.convertsapply 来强制整个数据框,但是当我处理时间序列数据时,其中一些是分类数据, 有的是数字, 我也不感兴趣

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

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

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

我也觉得这里可以使用循环,但我不确定如何写出它,或者它是否是一种实现方式。

df[ ,2:30] <- lapply(df[ ,2:30], as.factor)

如您所写,您需要将(所有?)字符变量转换为因子,您可以使用 mutate_if from dplyr

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

有了它,您只需对 is.character returns TRUE 的列进行操作,因此您无需担心列位置或名称。