使用其他列作为参数在summarize_at()

时间:2018-03-20 22:16:17

标签: r dplyr

这很有效:

> mtcars %>% group_by(cyl) %>% summarize_at(vars(disp, hp), weighted.mean)
# A tibble: 3 x 3
    cyl  disp    hp
  <dbl> <dbl> <dbl>
1  4.00   105  82.6
2  6.00   183 122  
3  8.00   353 209  

但现在我想使用mtcars中的一个列作为weighted.mean的w参数。可悲的是,明显的尝试失败了:

> mtcars %>% group_by(cyl) %>% summarize_at(vars(disp, hp), weighted.mean, w = wt)
Error in dots_list(...) : object 'wt' not found

尽管wt确实是mtcars的一部分。如何在summarize_at()中使用其他列作为函数的参数?

1 个答案:

答案 0 :(得分:3)

您可以尝试funs()语法:

mtcars %>% group_by(cyl) %>% 
        summarize_at(vars(disp, hp), funs(weighted.mean(.,wt)))
#    cyl  disp    hp
#  <dbl> <dbl> <dbl>
#1  4.00   110  83.4
#2  6.00   185 122  
#3  8.00   362 209