【发布时间】:2015-08-01 21:15:18
【问题描述】:
假设我有一个 data.frame,df。
a b d
1 2 4
1 2 5
1 2 6
2 1 5
2 3 6
2 1 1
我想对其进行操作,以便对于 a 和 b 相等的所有地方,我计算 d 的平均值。
我发现使用聚合可以做到这一点, 聚合(d ~ a + b,df,均值) 这给了我一些合理的东西
a b d
1 2 5
2 1 3
2 3 6
但理想情况下,我希望保留我原来的 d 列,并添加一个新列 m,这样我就可以得到一个包含平均值的新列“m”的原始 data.frame,
a b d m
1 2 4 5
1 2 5 5
1 2 6 5
2 1 5 3
2 3 6 6
2 1 1 3
关于如何在 R 中“正确”执行此操作的任何想法?
【问题讨论】:
-
您正在寻找
ave,如with(df, ave(d, a, b)) -
使用
data.table:setDT(df)[,m:=mean(d), by=list(a,b)][]
标签: r merge dataframe aggregate