将重复行转换为R中的单独列

时间:2015-11-04 13:36:02

标签: r

我有以下数据集:

class MyStaticCallable {
    static int call(int x) {           
        2*x
    }
}

assert MyStaticCallable(2) == 4 

由于我有重复的行,我想得到一个表,将所有重复的行追加为单独的列。像这样的东西。

    ID      Date    Op  SS  type    
1   AR02    03-14   NA  SS  ET
2   AR02    03-14   NA  SS  ET  
3   AR02    06-14   NA  SS  ET  
4   AR03    31-14   NA  SS  ET  
5   AR08    03-14   NA  SS  ET  
6   AR09    03-14   NA  SS  EN  

我试图在R中这样做。我尝试融合,转置(t),聚合函数但不知何故无法得到正确的修复。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

一种选择是转换' data.frame'到' data.table' (setDT(df1),按ID'分组,我们paste将这些行放在一起,然后使用cSplit拆分粘贴的列(' V1')要分隔列。请注意,我没有重复“ID&ID”列,因为它已经是行的唯一。

 library(splitstackshape)
 library(data.table)
 DT <- setDT(df1)[, do.call(paste, c(.SD, list(collapse=', '))) , ID]
 DT1 <- cSplit(DT, 'V1', sep='[ ,]+', fixed=FALSE, stripWhite=TRUE)
 setnames(DT1, 2:ncol(DT1), rep(names(df1)[-1], 3))
 DT1
 #     ID  Date Op SS type  Date Op SS type  Date Op SS type
 #1: AR02 03-14 NA SS   ET 03-14 NA SS   ET 06-14 NA SS   ET
 #2: AR03 31-14 NA SS   ET    NA NA NA   NA    NA NA NA   NA
 #3: AR08 03-14 NA SS   ET    NA NA NA   NA    NA NA NA   NA
 #4: AR09 03-14 NA SS   EN    NA NA NA   NA    NA NA NA   NA

不建议使用重复的列名,所以

 setnames(DT1,  make.unique(names(DT1)))