我有以下数据集:
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),聚合函数但不知何故无法得到正确的修复。任何帮助将不胜感激。
答案 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)))