我有一个说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行的权重。
如何执行此操作?抱歉,很长的帖子。由于无法在办公室访问堆栈溢出(无法从移动设备发布),因此无法提供示例数据。
我有一个说20列的数据框。第1列是组,第2列是权重(未归一化为1或100),第3到20列包含要汇总的数据。有大约250行,但只有15组。...
这样的作品会吗?
library(dplyr)
df %>%
group_by(group) %>%
summarise_at(vars(col1:col18), ~weighted.mean(., wt, na.rm = TRUE))
我们可以使用data.table
方法