1

列ごとに 2 つのデータ セットをマージしようとしています。

> x
   ID XD
1 sll0001 A
2 sll0002 B
3 sll0003 C

> y
   ID      XD
1 sll0001 go_0002
2 sll0001 go_0003
3 sll0003 go_0003
4 sll0003 go_0004
5 sll0004 go_0005

そして、私はこのようなものを手に入れたいです:

> xy
   ID   XD    XD.1    XD.2
1 sll0001    A go_0002 go_0003
2 sll0002    B    <NA>    <NA>
3 sll0003    C go_0004    <NA>
4 sll0004 <NA> go_0005    <NA>

私の問題は、 cbind() が重複した行名の使用を許可していないことです。何か案が?ありがとう!

4

1 に答える 1

1

使用data.table:

require(data.table)
xx <- data.table(x, key="ID")
yy <- data.table(y, key="ID")

idx <- seq_len(max(yy[, .N, by=ID]$N))
merge(xx, yy[, as.list(XD[idx]), by=ID], by="ID", all=TRUE)
        ID XD      V1      V2
1: sll0001  A go_0002 go_0003
2: sll0002  B      NA      NA
3: sll0003  C go_0003 go_0004
4: sll0004 NA go_0005      NA
于 2013-06-30T01:11:25.700 に答える