【问题标题】:how to flatten values in this column to separate columns in R [duplicate]如何展平此列中的值以分隔R中的列[重复]
【发布时间】:2015-09-14 02:43:42
【问题描述】:

我有一些数据如下所示

"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”。可能更多。

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

你能给我推荐一个R中的替代方案吗

【问题讨论】:

  • reshape2 包中查找dcast

标签: r flatten sapply


【解决方案1】:

你可以使用table 来做类似的事情。

例子:

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

【讨论】:

    【解决方案2】:

    这是reshape2 包的dcast 的另一种方法。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 2014-07-31
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 2016-08-06
      • 2016-10-20
      相关资源
      最近更新 更多