将数据框列的列表转换为有序因素

时间:2018-11-13 09:12:11

标签: r

我有一个数据框,其中包含许多(但不是全部)列,我想将它们转换为有序因子。

我的模拟数据:

df <- structure(list(var1 = c("level1", "level1", "level2", "level3", "level1", "level4", "level4"), 
                 var2 = c("level3", "level1", "level2", "level4", "level1", "level4", "level3"), 
                 var3 = c("level4", "level3", "level1", "level2", "level4", "level3", "level1")), 
            .Names = c("var1", "var2", "var3"), 
            row.names = c(NA, 7L), 
            class = "data.frame")

要更改的列向量定义如下:

ToFactors <- c("var1", "var2")

我尝试了以下操作:

df[ToFactors] <- factor(df[ToFactors], ordered = TRUE, 
                 levels = c("level1", "level2", "level3", "level4"))

但是,这会将所有单元格变成NA。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

使用lapply的简单解决方案

 df[, ToFactors] <- lapply(df[, ToFactors], factor, ordered = T, levels = c("level1", "level2", "level3", "level4"))

回答更新,谢谢@Pratik。