R 其中一个表中具有重复行名称的cbind

R 其中一个表中具有重复行名称的cbind,r,duplicates,cbind,R,Duplicates,Cbind,我正在尝试按列合并两个数据集: > 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

我正在尝试按列合并两个数据集:

> 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>
>xy
ID XD XD.1 XD.2
1 sll0001 A go_0002 go_0003
2 sll0002 B
3 sll0003 C go_0004
4 sll0004 go_0005

我的问题是cbind()不允许使用重复的行名称。有什么想法吗?谢谢

使用
数据。表

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
require(data.table)

xx使用
数据。表

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
require(data.table)

xx谢谢你,Arun,但是我在尝试做idx对象时得到了以下信息:seq_len中的错误(max(yy[,.N,by=ID]$N)):参数必须强制为非负整数。另外:警告消息:1:in max(yy[,.N,by=ID]$N):max没有不丢失的参数;返回-Inf 2:强制引入的NAs您是否可以编辑数据以添加此问题的最小可复制示例?(不要在评论下发布数据)。@MiguelHernandez你必须更新你的问题,而不是Arun的答案!编辑将被拒绝。@Arun,nevermind I更新了R版本和data.table包,工作正常!谢谢!!!谢谢你,阿伦,但是我在尝试做idx对象时得到了以下信息:seq_len中的错误(max(yy[,.N,by=ID]$N)):参数必须强制为非负整数。另外:警告消息:1:in max(yy[,.N,by=ID]$N):max没有不丢失的参数;返回-Inf 2:强制引入的NAs您是否可以编辑数据以添加此问题的最小可复制示例?(不要在评论下发布数据)。@MiguelHernandez你必须更新你的问题,而不是Arun的答案!编辑将被拒绝。@Arun,nevermind I更新了R版本和data.table包,工作正常!谢谢!!!