data.table group by连接表中的非id列

时间:2016-05-17 19:57:30

标签: r data.table

考虑以下两个data.tables:

x <- data.table(id=c(1,2,3,4),cost=c(0.7,0.2,0.5,0.9))
y <- data.table(id=c(1,2,3,4),group=c(1,2,1,2))
setkey(x,id)
setkey(y,id)

我想通过减去y中的组来平均化成本。

我的尝试如下,但是,R给出了一个无法找到的错误&#39; group&#39;:

x[y,cost:=(cost-mean(cost)),by=.(group)]

是否有一种很好的方法可以在不向x?

添加列的情况下执行此操作

1 个答案:

答案 0 :(得分:0)

这对你有用吗?

output <- y[x][, normcost:=(cost-mean(cost)), by=group]

output 
#    id group cost normcost
# 1:  1     1  0.7     0.10
# 2:  2     2  0.2    -0.35
# 3:  3     1  0.5    -0.10
# 4:  4     2  0.9     0.35