我有一些看起来如下的数据
"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
中建议我一个替代方案答案 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