【发布时间】:2016-02-09 10:49:52
【问题描述】:
我一直在努力解决以下问题,因为我需要尽快从新数据集加载、操作和生成分数。我已经定义了一个数据字典,其中包含每个变量类的描述(例如数字、因子、字符、日期),并在适用的情况下,列出了所有可能的因子级别:
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/ 循环的解决方案。这是我现有的设置因子水平的解决方案(稍微复杂的版本),目前对于我的要求来说太慢了:
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]), ", ")) )
})
如果可能的话,任何关于避免在此处使用循环的建议或任何替代解决方案都将不胜感激!
谢谢!
【问题讨论】:
-
简而言之,您正在尝试根据列名将预定义级别分配给数据框 cols?
-
感谢大家的回复,并为发错地方道歉!是的,我在尝试矢量化数据操作任务时面临的主要问题只是将预定义的级别分配给我的因素。
标签: r