将多个时间序列列强制转换为大数据帧中的因素
Coercing multiple time-series columns to factors in large dataframe
我想知道是否有 "easy/quick" 将字符变量转换为因子的方法。
我知道,可以用列名创建一个向量,然后使用 lapply
。但是,我正在处理一个包含 200 多个变量的大型数据框,因此最好不要在向量中写入 200 多个名称。
我也知道我可以通过使用 lapply
、type.convert
和 sapply
来强制整个数据框,但是当我处理时间序列数据时,其中一些是分类数据, 有的是数字, 我也不感兴趣
有什么方法可以使用其中的列号吗? 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
的列进行操作,因此您无需担心列位置或名称。
我想知道是否有 "easy/quick" 将字符变量转换为因子的方法。
我知道,可以用列名创建一个向量,然后使用 lapply
。但是,我正在处理一个包含 200 多个变量的大型数据框,因此最好不要在向量中写入 200 多个名称。
我也知道我可以通过使用 lapply
、type.convert
和 sapply
来强制整个数据框,但是当我处理时间序列数据时,其中一些是分类数据, 有的是数字, 我也不感兴趣
有什么方法可以使用其中的列号吗? 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
的列进行操作,因此您无需担心列位置或名称。