如何解决在r中使用跨组汇总的加权平均值
我想使用r中的聚合函数对一组加权均值。
这是我的数据:
set.seed(1980)
Group_1 <- sample(letters[1:4],50,TRUE)
Group_2 <- sample(letters[8:13],TRUE)
Weight <- sample(seq(1,50),TRUE)
Value <- sample(seq(1,TRUE)
DF <- data.frame(Group_1,Group_2,Weight,Value)
head(DF)
对于每个成对的组,我想使用Value
列获取Weight
列的加权平均值。
这样,聚合函数将如下所示:
aggregate(Value ~ Group_1 + Group_2,data = df,mean)
我如何使用聚合函数计算加权平均值?
解决方法
使用mean
代替weighted.mean
。但是,aggregate
可能不是这里的选项,因为aggregate
仅在'Value'列上循环,并且没有访问每个组的'Weight'
library(dplyr)
DF %>%
group_by(Group_1,Group_2) %>%
summarise(wt_mean = weighted.mean(Value,Weight),.groups = 'drop')
-输出
# A tibble: 21 x 3
# Groups: Group_1 [4]
# Group_1 Group_2 wt_mean
# <chr> <chr> <dbl>
# 1 a h 24.7
# 2 a i 15
# 3 a j 21.1
# 4 a k 23.6
# 5 a m 14.1
# 6 b i 40
# 7 b j 12.7
# 8 b k 6.88
# 9 b l 30.6
10 b m 5
# … with 11 more rows
如果我们想使用base R
,那么by
应该可以工作
by(DF,DF[c('Group_1','Group_2')],function(x) weighted.mean(x$Value,x$Weight))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。