我想从该数据集创建虚拟变量:
DF<-structure(list(A = c(1, 2, 3, 4, 5), B = c("1,3,2", "2,1,3,6",
"3,2,5,1,7", "3,7,4,2,6,5", "4,10,7,3,5,6")), .Names = c("A", "B"),
row.names = c(NA, 5L), class = "data.frame")
> DF
A B
1 1 1,3,2
2 2 2,1,3,6
3 3 3,2,5,1,7
4 4 3,7,4,2,6,5
5 5 4,10,7,3,5,6
所需的输出应如下所示:
A 1 2 3 4 5 6 7 8 9 10
1 1 1 1 0 0 0 0 0 0 0
2 1 1 1 0 0 1 0 0 0 0
3 1 1 1 0 1 0 1 0 0 0
4 0 1 1 1 1 1 1 0 0 0
5 0 0 1 1 1 1 1 0 0 1
有没有一种有效的方法来做这种事情?我可以使用strsplit或ifelse。原始数据集非常大,有很多行(> 10k),列B中的值(> 15k)。dummy包中的功能dummies无法正常运行。
我也发现了类似的情况:将一列拆分为多列。但是在我的情况下,以上链接的解决方案确实工作缓慢(在Dell i7-2630QM,8Gb,Win7 64位,R 2.15.3 64位上,最多15分钟)。
预先感谢您的回答。
哈士奇WWW