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

its*_*ami 4 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)))
Run Code Online (Sandbox Code Playgroud)

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

iris %>%
  group_by(Species) %>%
  summarise(across(starts_with("Sepal"), list(mean = mean, sd = sd)))  
Run Code Online (Sandbox Code Playgroud)

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

Ron*_*hah 5

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

library(dplyr)

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