如何修复 summarise_all() 中的错误“'x' and 'w' must have the same length”?
How to fix the error "'x' and 'w' must have the same length" in summarise_all()?
我想使用 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 来做到这一点,但我可以使用其他可用的方法。
我们不需要 .$
,因为 .$
提取整个列值而不是对应于分组结构的值
df %>%
group_by(A)%>%
summarise_all(list(~ weighted.mean(., B)))
如果我们显式提供参数,也可以不使用 lambda 函数 (~
) 编写
df %>%
group_by(A)%>%
summarise_all(weighted.mean, w = B)
我想使用 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 来做到这一点,但我可以使用其他可用的方法。
我们不需要 .$
,因为 .$
提取整个列值而不是对应于分组结构的值
df %>%
group_by(A)%>%
summarise_all(list(~ weighted.mean(., B)))
如果我们显式提供参数,也可以不使用 lambda 函数 (~
) 编写
df %>%
group_by(A)%>%
summarise_all(weighted.mean, w = B)