根据R中的多个约束在Data表中执行操作

时间:2016-11-08 07:14:24

标签: r data.table

通常当我对数据表执行操作时,它就在一个约束上,例如

 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

1 个答案:

答案 0 :(得分:1)

你可以像akrun写的那样写它:

setDT(df)[, mean.price := mean(Price), by = .(Id,Year)]

或将名称作为vector:

setDT(df)[, mean.price := mean(Price), by = c("Id","Year")]
相关问题