gpt4 book ai didi

r - 如何按不同的列名合并两个data.table?

转载 作者:行者123 更新时间:2023-12-03 09:51:40 31 4
gpt4 key购买 nike

我有两个数据表 X .

中的列X :area, id, value 中的列是 :ID, price, sales
创建两个 data.tables:

X = data.table(area=c('US', 'UK', 'EU'),
id=c('c001', 'c002', 'c003'),
value=c(100, 200, 300)
)

Y = data.table(ID=c('c001', 'c002', 'c003'),
price=c(500, 200, 400),
sales=c(20, 30, 15)
)

我为 设置了 key X :
setkey(X, id)
setkey(Y, ID)

现在我尝试加入 X 来自 id X ID :
merge(X, Y)
merge(X, Y, by=c('id', 'ID'))
merge(X, Y, by.x='id', by.y='ID')

所有引发的错误说 by 中的列名论据无效。

我引用了data.table的手册,找到了 merge功能不支持 by.xby.y论据。

我怎么能用不同的列名连接两个 data.tables 不更改列名 ?

追加 :
我设法通过 X[Y] 加入了这两个表,但为什么 merge函数在 data.table 中失败?

最佳答案

过时

使用这个操作:

X[Y]
# area id value price sales
# 1: US c001 100 500 20
# 2: UK c002 200 200 30
# 3: EU c003 300 400 15
或此操作:
Y[X]
# ID price sales area value
# 1: c001 500 20 US 100
# 2: c002 200 30 UK 200
# 3: c003 400 15 EU 300
编辑 在您编辑您的问题后,我阅读了 FAQ 的第 1.12 节:“X[Y] 和 merge(X,Y) 之间的区别是什么?”,这让我结帐 ?merge我发现有两种不同的合并功能,具体取决于您使用的包。默认为 merge.data.frame但 data.table 使用 merge.data.table .相比
merge(X, Y, by.x = "id", by.y = "ID") # which is merge.data.table
# Error in merge.data.table(X, Y, by.x = "id", by.y = "ID") :
# A non-empty vector of column names for `by` is required.
merge.data.frame(X, Y, by.x = "id", by.y = "ID")
# id area value price sales
# 1 c001 US 100 500 20
# 2 c002 UK 200 200 30
# 3 c003 EU 300 400 15
为完整性进行编辑 基于 comment由@Michael Bernsteiner 提供,它看起来像 data.table团队正在计划实现 by.xby.ymerge.data.table功能,但还没有这样做。

关于r - 如何按不同的列名合并两个data.table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29865512/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com