如何按ID合并表格,然后合并具有相同ID的单元格

时间:2018-06-27 16:04:26

标签: r join

表1:

      ID Sex
1: 12345   M
2: 23456   M
3: 34567   F
4: 45678   F
5: 56789   F

表2:

      ID  name
1: 12345   sam
2: 23456  jack
3: 23456   tom
4: 56789 steve
5: 56789   rob

我需要合并这两个表以获得:

   ID Sex      name
1: 12345   M       sam
2: 23456   M  jack,tom
3: 34567   F          
4: 45678   F          
5: 56789   F steve,rob

我尝试使用Join函数,但不允许我将这些名称组合在一起,是否有解决此问题的好方法?

2 个答案:

答案 0 :(得分:2)

如果这些是data.tables,则一个选项是通过第二个数据集“ dt2”中的“ ID” paste {name}并与“ ID”中的第一个(“ dt1”)联接,在第一个数据集中创建“名称”列

library(data.table)
dt1[dt2[, .(name = toString(name)), ID], name := name, on = .(ID)]
dt1
#      ID Sex       name
#1: 12345   M        sam
#2: 23456   M  jack, tom
#3: 34567   F       <NA>
#4: 45678   F       <NA>
#5: 56789   F steve, rob

答案 1 :(得分:0)

这是三个独立操作的组合,本网站上的其他答案对此进行了详细介绍:

  1. 您要将表连接在一起

  2. 然后从长格式扩展到宽格式

  3. ,最后将这些多个“名称”列粘贴到单个名称列中