我正在尝试进行一些 dplyr 编程并且遇到了麻烦。我想要group_by任意数量的变量(因此,across),然后summarize基于任意长度(但长度都相同)的向量:
所以,就像在maporapply语句中一样,我想执行最终看起来像这样的代码:
data %>%
group_by(group_column) %>%
summarize(new_name_1 = function_1(column_1),
summarize(new_name_2 = function_2(column_2))
Run Code Online (Sandbox Code Playgroud)
这是我想要的和迄今为止我最好的镜头的一个例子。我知道names如果我使用 cross,我可以使用参数来清理它们,但我不相信 cross 是正确的方法。最后,我将把它应用到相当大的数据帧,所以我宁愿不计算额外的列。
想要的结果
mtcars %>%
group_by(across(c("cyl", "carb"))) %>%
summarise(across(c("disp", "hp"), list(mean = mean, sd = sd))) %>%
select(cyl, carb, disp_mean, hp_sd)
#> `summarise()` regrouping output by 'cyl' (override with `.groups` argument)
#> # A tibble: 9 x 4
#> # Groups: cyl [3]
#> cyl carb disp_mean hp_sd
#> …Run Code Online (Sandbox Code Playgroud)