当将 `dplyr::summarise()` 与 `across()` 函数一起使用时,我可以混合使用列表和公式语法吗

时间:2021-04-15 00:20:38

标签: r dplyr

我想将 dplyr::summarise()dplyr::across() 函数一起使用来生成一个表,其中包含非缺失值的数量、几个变量的均值和标准差。我可以使用 purrr 建模语法获取有关缺失值和平均值的信息,但我无法弄清楚如何在不使用多个汇总调用的情况下将汇总放入单个表中,然后 bind_cols()

iris %>%
  group_by(Species) %>%
  summarise(across(starts_with("Sepal"), ~sum(!is.na(.))))

iris %>%
  group_by(Species) %>%
  summarise(across(starts_with("Sepal"), ~mean(., na.rm = TRUE)))

有没有办法组合列表语法:

iris %>%
  group_by(Species) %>%
  summarise(across(starts_with("Sepal"), list(mean = mean, sd = sd)))  

使用上面显示的 purrr 函数语法一次获得未缺失值的数量、均值和标准差?

1 个答案:

答案 0 :(得分:5)

要在同一个 across 语句中应用多个函数,您可以使用 list 语法:

library(dplyr)

iris %>%
  group_by(Species) %>%
  summarise(across(starts_with("Sepal"), list(sum = ~sum(!is.na(.)), 
                                              mean = mean, sd = sd)))