R:为每个因子级别将R因子扩展为虚拟列

时间:2014-03-09 18:46:14

标签: r bigdata categorical-data dummy-data model.matrix

我在R中有一个相当大的数据框,有两列。我试图从虚拟变量的Code列(factor类型,858级别)中取出。问题是当我试图这样做时,R Studio总是崩溃。

> str(d)
'data.frame':   649226 obs. of  2 variables:
 $ User: int  210 210 210 210 269 317 317 317 317 326 ...
 $ Code      : Factor w/ 858 levels "AA02","AA03",..: 164 494 538 626 464 496 435 464 475 163 ... 

User列不是唯一的,这意味着可能有多个行具有相同的User。如果最后行数保持不变或者具有相同User的行被合并到一行中,并且具有多个非空的列且计数为Code,则无关紧要。

我找到了几个适用于较小数据集的解决方案,但不适用于我的解决方案。

如果您可以向我推荐一些快速且适用于此类数据的方法,那就太棒了。

谢谢!

1 个答案:

答案 0 :(得分:2)

这完全适合我:

library(reshape2)
m <- acast(data = d, User ~ Code)

唯一的问题是它产生了NA s而不是0 s,但这可以很容易地改变:

m[is.na(m)] <- 0