dplyr:summarise()中的用户定义函数,涉及两个输入向量

问题描述 投票:0回答:2

我有一个说20列的数据框。第1列是组,第2列是权重(未归一化为1或100),第3到20列包含要汇总的数据。有大约250行,但只有15组。因此,平均每组大约有16-17行。

对于第3到20列的每一列,我需要获取按组加权的平均值,权重为第2列。

因此,将所有列乘以第2列然后运行就很容易了>>

group_by(df, column1)%>%

summarise_all(sum_na)

这里sum_nasumna.rm=T的常用功能

然后将第3列除以20的第2列。

问题是数据帧中散布了NA。举例来说,第12列的第150行(属于第5组)具有NA。在计算第5组和第12列的加权平均值时,分母应排除第2列第150行的权重。

如何执行此操作?抱歉,很长的帖子。由于无法在办公室访问堆栈溢出(无法从移动设备发布),因此无法提供示例数据。

我有一个说20列的数据框。第1列是组,第2列是权重(未归一化为1或100),第3到20列包含要汇总的数据。有大约250行,但只有15组。...

r dplyr weighted-average
2个回答
1
投票

这样的作品会吗?

library(dplyr)

df %>%
  group_by(group) %>%
  summarise_at(vars(col1:col18), ~weighted.mean(., wt, na.rm = TRUE))

0
投票

我们可以使用data.table方法

© www.soinside.com 2019 - 2024. All rights reserved.