首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R Data.Table:内存中从左侧和右侧连接多列

R Data.Table:内存中从左侧和右侧连接多列
EN

Stack Overflow用户
提问于 2017-08-14 22:58:47
回答 1查看 1.2K关注 0票数 2

我想合并两个数据表上的多列使用数据表。

代码语言:javascript
复制
## The two tables
A <- data.table(a = 1:4, b = 12:15, c = 10:13)
   a  b  c
1: 1 12 10
2: 2 13 11
3: 3 14 12
4: 4 15 13

B <- data.table(a = 1:3, b = 12:14, d = 10:12, e = 10:12)
   a  b  d  e
1: 1 12 10 10
2: 2 13 11 11
3: 3 14 12 12    

我想得到这样的结果:

代码语言:javascript
复制
A <- merge(A, B, by = c('a', 'b'), all.x = T)
   a  b  c  d  e
1: 1 12 10 10 10
2: 2 13 11 11 11
3: 3 14 12 12 12
4: 4 15 13 NA NA

This answer表明,数据表可以在内存中编辑A数据帧,因此在使用大型数据集时效率更高。建议的代码是

代码语言:javascript
复制
A[B, bb:=i.b, on='a']

我如何修改这段代码,使A数据帧合并到内存中,并得到与上面相同的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-14 23:04:56

如果我们想做join的话。这里不需要i.di.e,因为列在'B‘中是唯一的

代码语言:javascript
复制
nm1 <- setdiff(names(B), names(A)) 
A[B, (nm1) :=  mget(nm1), on = .(a, b)]
A
#   a  b  c  d  e
#1: 1 12 10 10 10
#2: 2 13 11 11 11
#3: 3 14 12 12 12
#4: 4 15 13 NA NA
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45677425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档