如何在此列中展平值以分隔R中的列

时间:2015-06-27 04:28:20

标签: r flatten sapply

我有一些看起来如下的数据

"ID","PROD"
"1001658",6619
"100288",11843
"100288",20106
"1004303",921

我需要将其转换为类似

的格式
"ID","PROD_6619","PROD_11843","PROD_20106","PROD_921"
"1001658",1,0,0,0
"100288",0,1,1,0
"1004303",0,0,0,1

基本上,原始数据集中PROD列中的每个值都在它自己的单独列中。请注意,上面的数据集只是一个示例,我不能硬编码为" PROD_6619"," PROD_11843"," PROD_20106"," PROD_921&#34 ;。它可能会更多。

我尝试使用for循环迭代地编写它,对于我庞大的数据集来说它非常慢。

你能否在R

中建议我一个替代方案

2 个答案:

答案 0 :(得分:6)

你可以使用table来做这样的事情。

示例:

table(mydf)
##          PROD
## ID        921 6619 11843 20106
##   100288    0    0     1     1
##   1001658   0    1     0     0
##   1004303   1    0     0     0

答案 1 :(得分:0)

以下是使用dcast包的reshape2的另一种方法。

library(reshape2)

dcast(dat, ID ~ PROD, length )
Using PROD as value column: use value.var to override.
       ID 921 6619 11843 20106
1  100288   0    0     1     1
2 1001658   0    1     0     0
3 1004303   1    0     0     0