我有这个数据集
d1 = data.frame(PatID=c(1,1,1,2,2,4,1,2),
code1=c(1,2,3,1,2,7,2,8),
location=c('a','b','c','d','e','f','g','h'))
我想消除重复行(在 PatID
上)所以
- 对于每个唯一的
PatID
,我只得到一行; - 为所有公共(public)行合并 code1 的值,
- 保留任何匹配行的位置(第一行或最后一行 - 无关紧要)。
输出应该是:
PatID code1 location
1 1,2,3 a
2 1,2,8 d
4 7 f
我尝试聚合、ddply 均未成功,甚至在使用 melt dcast 时遇到了困难。我以前是 unix 程序员,但对 r 还是陌生的.
最佳答案
ddply
工作正常:
ddply(d1,.(PatID),
summarise,
code1 = paste(unique(code1),collapse = ','),
location = location[1])
PatID code1 location
1 1 1,2,3 a
2 2 1,2,8 d
3 4 7 f
哦,好的。这是 data.table 版本:
d2 <- as.data.table(d1)
> d2[,list(code1 = paste(unique(code1),collapse = ','),location = location[1]),by = 'PatID']
PatID code1 location
1: 1 1,2,3 a
2: 2 1,2,8 d
3: 4 7 f
关于r - 在合并另一个列值时折叠数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17707389/