【发布时间】:2020-04-14 17:21:12
【问题描述】:
我有一个 20 列的数据框。第 1 列是组,第 2 列是权重(未标准化为 1 或 100),第 3 到 20 列包含要聚合的数据。大约有 250 行,但只有 15 个组。因此,平均每组大约有 16-17 行。
对于第 3 到 20 列中的每一列,我需要获得分组加权平均值,权重为第 2 列。
因此,这很容易通过将所有列乘以第 2 列然后运行
group_by(df, column1)%>%
summarise_all(sum_na)
这里sum_na是常用函数sum和na.rm=T
然后将第 3 列到第 20 列除以第 2 列。
问题在于数据帧中散布着 NA。例如,第 12 列中的第 150 行(例如属于第 5 组)具有 NA。在计算第 5 组和第 12 列的加权平均值时,分母应排除第 2 列第 150 行的权重。
如何做到这一点?对不起,很长的帖子。无法提供示例数据,因为很遗憾在办公室无法访问堆栈溢出(从移动设备发布)。
【问题讨论】:
-
请分享一个可重现的示例以及预期的输出
标签: r dplyr weighted-average