重复列的加权平均值

时间:2017-11-14 03:38:08

标签: r

我有df:

x <- c(1,1,2,2,3,3,4,5)
y <- c(1,1,2,3,3,3,4,4)
freq <- c(4,6,7,2,2,6,5,1)
distmean <-c(2,4,5,7,3,5,2,7)
df <- data.frame(x,y,freq,distmean)


x      y   freq   distmean
1      1      4          2
1      1      6          4 
2      2      7          5
2      3      2          7
3      3      2          3
3      3      6          5 
4      4      5          2 
5      4      1          7

我希望根据xy汇总行,freq的总和和distmean加权freq的平均值。< / p>

所以最后我想要:

x      y   freq    distmean
1      1     10         3.2
2      2      7         5.0
2      3      2         7.0
3      3      8         4.5
4      4      5         2.0 
5      4      1         7.0

我尝试使用aggregate()我可以将重复的行组合起来,但无法找出加权平均值。

1 个答案:

答案 0 :(得分:0)

这可能不是一个简短的方法。但如果你想避免复杂的功能,可以这样做。

df2=a=aggregate(freq ~ x+y, data=df, sum, na.rm=TRUE) df$dist=df$distmean*df$freq b=aggregate(dist ~ x+y, data=df, sum, na.rm=TRUE) df2$distmean=(b/a)[3]