我有两个表,它们具有相同的列名,行数和列数:
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
我尝试了merge
,rbind
,cbind
,但没有得到任何好的结果。
任何想法如何做到这一点?
答案 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