我有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
我希望根据x
和y
汇总行,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()
我可以将重复的行组合起来,但无法找出加权平均值。
答案 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]