gpt4 book ai didi

r - 如何[join on] [where] in r data.tables

转载 作者:行者123 更新时间:2023-12-05 00:48:55 25 4
gpt4 key购买 nike

有没有办法在 data.table 中结合连接和子集功能?假设我有下表:

dt = data.table(itemID = c(1,1,2,2),bucketID = c(1,2,2,3),value = 1:4)

我想将每个项目的最低存储桶的值设置为零。我的想法是运行:
ends = dt[,.(min = min(bucketID)),itemID]
dt[ends,on="itemID",bucketID==min,value:=0]

即加入表格,找到两行相同的地方,然后更新值列。但这不起作用。我可以通过以下方式获得正确的结果:
ends = dt[,.(min = min(bucketID)),itemID]
dt = dt[ends,on="itemID"][bucketID==min,value:=0][,c(-4)]

然而,这似乎有点迂回。有没有更好的方法来结合 join 和 where?

最佳答案

扩展您的加入方法,您可以通过 itemID 加入。和 min值(value)观

dt[
ends
, on = c("itemID", bucketID = "min")
, value := 0
]

dt
# itemID bucketID value
# 1: 1 1 0
# 2: 1 2 2
# 3: 2 2 0
# 4: 2 3 4

关于r - 如何[join on] [where] in r data.tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48532289/

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