考虑以下两个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给出了一个找不到“组”的错误:
x[y,cost:=(cost-mean(cost)),by=.(group)]

有没有一种在不向x添加列的情况下执行此操作的好方法?

最佳答案

这对您有用吗?

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

关于r - 联接表中的非id列对data.table进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37285184/

10-12 16:37