设置列类并定义任何因子级别,而不使用R中的循环

时间:2016-02-09 10:49:52

标签: r

我一直在努力解决以下问题,因为我需要尽快加载,操作并从新数据集中生成分数。我已经定义了一个数据字典,其中包含每个变量类的描述(例如数字,因子,字符,日期),以及适用的所有可能因子级别的列表:

DD <- data.frame(Var = c("a", "b", "c", "d"),
Class = c("Numeric", "Factor", "Factor", "Date"),
Levels = c(NA, "B1, B2, B3", "C1, C2", NA))

Data <- data.frame(a = 5, b = "B1", c = "C2", d = "2015-05-01")

最终,我打算使用model.matrix来生成具有一组通用指标变量/列的设计矩阵,而不管在特定数据集中观察到的实际因子水平,因此我可以从特定模型中获取数据。

我需要尽快完成这些任务,因此,我试图找到一种避免使用lapply / loops的解决方案。这是(一个稍微复杂的版本)我现有的设置因子水平的解决方案,目前对我的要求来说太慢了:

lapply(1:ncol(Data[,DD$Class=="Factor"]), function(i) {
    factor( as.character( unlist( Data[,DD$Class=="Factor"][i])) , 
    levels = unlist(strsplit(as.character(DD$Levels[DD$Class=="Factor"][i]), ", ")) )
}) 

任何有关避免在此处使用循环的建议,如果可能的话,或任何其他解决方案将非常感谢!

谢谢!

1 个答案:

答案 0 :(得分:0)

很抱歉,我没有足够的声誉将其添加为评论。

我可以问: 1.数据集的维度是什么? 2.你可以满足的运行时间是什么?

您可以考虑使用Microsoft Open R(Previsouly Revolution R),它可以优化基本数据操作。