summarise_at dplyr 的加权平均值

数据挖掘 r 数据挖掘 数据集 dplyr
2022-02-14 13:46:36

我严格需要使用 summarise_at 来计算加权平均值,权重基于另一列的值

    df %>% summarise_at(.vars = vars(FACTOR,tv:`smart tv/console`), 
                  .funs = weighted.mean, w=INVESTMENT, na.rm=TRUE)

它总是显示错误:'INVESTMENT' is not found.

然后我尝试了:

df %>%summarise_at(.vars = vars(FACTOR,tv:`smart tv/console`), 
               .funs = weighted.mean, w=vars(INVESTMENT), na.rm=TRUE)

但在这种情况下: Evaluation error: 'x' and 'w' must have the same length.

为什么是这样?我做错什么了吗?你有解决这个问题的提示吗?谢谢

1个回答

您可以直接在weighted.mean()函数中指定权重,在调用中funs()像这样:

data.frame(x=rnorm(100), y=rnorm(100), weight=runif(100)) %>%
      summarise_at(vars(x,y), funs(weighted.mean(., w=weight)))