我想使用dplyr :: summarise_all()和weighted.mean来计算每个组的许多列的加权平均值。
我尝试直接使用匿名函数,但返回了错误: “ x”和“ w”必须具有相同的长度。我知道我可以使用summarise()和weighted.mean,但是通过这种方式,我需要指定所有列名,这不是我想要的。
result = df%>%
group_by(A)%>%
summarise_all(function(x){weighted.mean(x, .$B)})
此处数据框具有组列A,权重列B和其他列。我希望对A中的每个组都按B列具有其他列值的加权平均值。我希望我可以使用dplyr和weighted.mean来做到这一点,但是我对其他可用方法也可以。
答案 0 :(得分:0)
我们不需要.$
,因为.$
提取整个列值,而不是提取与分组结构相对应的值
df %>%
group_by(A)%>%
summarise_all(list(~ weighted.mean(., B)))
如果我们明确提供参数,也可以不使用lambda函数(~
)来编写
df %>%
group_by(A)%>%
summarise_all(weighted.mean, w = B)