r - 在合并另一个列值时折叠数据框中的行

标签 r merge dataframe plyr reshape2

我有这个数据集

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 上)所以

  1. 对于每个唯一的 PatID,我只得到一行;
  2. 为所有公共(public)行合并 code1 的值,
  3. 保留任何匹配行的位置(第一行或最后一行 - 无关紧要)。

输出应该是:

PatID    code1    location 
1        1,2,3    a 
2        1,2,8    d 
4        7        f 

我尝试聚合、ddply 均未成功,甚至在使用 melt dcast 时遇到了困难。我以前是 unix 程序员,但对 还是陌生的.

最佳答案

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/

相关文章:

r - 如何使用 readxl 跳过第二行

r - 编辑 R 列中的每一行

mysql - 将 MySQL 转储与现有表合并

R:粘贴两个没有空格的字符串

r - 在 R 中存储复杂的时间序列

python - pandas 多索引根据第二列选择/删除行

r - 使用稀疏矩阵作为 R 中 ranger 包的输入

Javascript合并两个对象

python - 如何根据记录中其他 4 个字段的 bool 运算符有效更新数据框中的字段?

r - 计算多个多边形之间共享边界的长度