合并R中的两个表

时间:2018-11-09 10:55:29

标签: r merge rbind

我有两个表,它们具有相同的列名,行数和列数:

ID     Q1        Q2
1      aa        bb
2      cc        12
3      q         z


ID     Q1        Q2
1      A         B
2      p         l_
3      23        r

我希望在下表中将以上各列与上下文合并,并用\ n分隔,如下所示:

  ID     Q1        Q2
  1      aa        bb
         A         B
  2      cc        12
         p         l_
  3      q         z
         23        r

我尝试了mergerbindcbind,但没有得到任何好的结果。 任何想法如何做到这一点?

必填结果:
enter image description here

1 个答案:

答案 0 :(得分:0)

样本数据:

> d1
  ID Q1 Q2
1  1 aa bb
2  2 cc 12
3  3  q  z
> d2
  ID Q1 Q2
1  1  A  B
2  2  p l_
3  3 23  r

行绑定:

> d = rbind(d1, d2)

按ID排序:

> d = d[order(d$ID),]

用重复的ID替换重复的ID,例如NA:

> d$ID[duplicated(d$ID)]=NA

已完成工作:

> d
  ID Q1 Q2
1  1 aa bb
4 NA  A  B
2  2 cc 12
5 NA  p l_
3  3  q  z
6 NA 23  r
> 

如果您要使用\n分隔合并的单元格来创建合并单元格,则此操作:

> cbind(ID=d1$ID, setNames(do.call(cbind.data.frame,lapply(c("Q1","Q2"), function(n){paste(d1[[n]],d2[[n]],sep="\n")})),c("Q1","Q2")))
  ID    Q1     Q2
1  1 aa\nA  bb\nB
2  2 cc\np 12\nl_
3  3 q\n23   z\nr