这很好用(将其视为使用list()而不是vars() here的解决方案):

mtcars %>%
  group_by(cyl) %>%
  summarize_at(vars(disp, hp), list(~weighted.mean(., wt)))

但是,在使用summarize_if()的非常相似的情况下,它不起作用:
mtcars %>%
  group_by(cyl) %>%
  summarize_if(is.numeric, list(~weighted.mean(., wt)))

Error in weighted.mean.default(., wt) :
  'x' and 'w' must have the same length

为什么?

最佳答案

我相信这与您为这个新变量命名的内容有关。这有效:

mtcars %>%
     group_by(cyl) %>%
     summarize_if(is.numeric, list(tmp = ~weighted.mean(., wt)))

有关更多详细信息,请参见here命名部分和here中已提到的问题。

关于r - 使用其他列作为在summary_if()中起作用的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61804724/

10-12 17:44