通常当我对数据表执行操作时,它就在一个约束上,例如
setDT(df)[, mean.price := mean(Price), by = Id]
此命令根据唯一Id
获取价格均值。我的问题是,如果有一种方法可以在命令中提到两个约束,例如
setDT(df)[, mean.price := mean(Price), by = Id & Year]
因此,我可以获得属于同一Id
的相同Year
的行的平均值。
假设我有以下数据框
Id Price Year
1 5 2003
1 10 2003
1 4 2003
1 6 2004
1 6 2004
1 10 2004
2 7 2003
2 10 2003
2 3 2003
2 2 2004
2 3 2004
2 10 2004
所以结果数据框看起来像
Id Price Year Mean.Price
1 5 2003 6.33
1 10 2003 6.33
1 4 2003 6.33
1 6 2004 7.33
1 6 2004 7.33
1 10 2004 7.33
2 7 2003 7
2 10 2003 7
2 4 2003 7
2 2 2004 5
2 3 2004 5
2 10 2004 5
答案 0 :(得分:1)
你可以像akrun写的那样写它:
setDT(df)[, mean.price := mean(Price), by = .(Id,Year)]
或将名称作为vector:
setDT(df)[, mean.price := mean(Price), by = c("Id","Year")]