使用简单列表和自动命名列表重写 `summarise_all` 而不使用弃用的 `funs`
rewriting `summarise_all` without deprecated `funs`, using Simple list and Auto-named list
我正在尝试计算 2 列中每一列中 NA
值的数量。
下面的代码有效。
temp2 %>%
select(c18basic, c18ipug) %>%
summarise_all(funs(sum(is.na(.))))
但是我收到这个警告:
Warning message:
`funs()` was deprecated in dplyr 0.8.0.
Please use a list of either functions or lambdas:
# Simple named list:
list(mean = mean, median = median)
# Auto named with `tibble::lst()`:
tibble::lst(mean, median)
# Using lambdas
list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))
如何使用上述每种技术重写我的 summarise_all
行:Simple list
和 Auto named list
?不使用 summarise_all
,因为它似乎是 superseded.
谢谢。
注意:我发现 TidyVerse 文档很难理解。如果有人可以指出可以帮助我自己解决这些问题的资源,我将不胜感激。提前谢谢你。
注意:我想出了使用 Lambda 的方法:
temp2 %>%
select(c18basic, c18ipug) %>%
summarise(across(everything(), ~ sum(is.na(.x))))
像这样?
dplyr::summarize_all(list(sum= ~sum(is.na(.x), na.rm = T)))
顺便说一下,select()
不是必须的,你可以写成
temp2 %>%
summarise(across(c(c18basic,c18ipug), ~ sum(is.na(.x))))
例如
library(dplyr)
mtcars[1,1] <- NA
mtcars %>%
summarise(across(c(mpg ,cyl), list(sum= ~sum(is.na(.x), na.rm = T))))
结果
mpg_sum cyl_sum
1 0
我想你明白了,看到语法是多么简单,当使用更多功能时,例如
mtcars[1,1] <- NA
mtcars %>%
summarise(across(c(mpg, cyl), list(
Mean = ~ mean(., na.rm = T),
SD = ~ sd(., na.rm = T),
Min = ~ min(., na.rm = T),
Max = ~ max(., na.rm = T),
Obs. = ~ sum(!is.na(.))
)))
我正在尝试计算 2 列中每一列中 NA
值的数量。
下面的代码有效。
temp2 %>%
select(c18basic, c18ipug) %>%
summarise_all(funs(sum(is.na(.))))
但是我收到这个警告:
Warning message:
`funs()` was deprecated in dplyr 0.8.0.
Please use a list of either functions or lambdas:
# Simple named list:
list(mean = mean, median = median)
# Auto named with `tibble::lst()`:
tibble::lst(mean, median)
# Using lambdas
list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))
如何使用上述每种技术重写我的 summarise_all
行:Simple list
和 Auto named list
?不使用 summarise_all
,因为它似乎是 superseded.
谢谢。
注意:我发现 TidyVerse 文档很难理解。如果有人可以指出可以帮助我自己解决这些问题的资源,我将不胜感激。提前谢谢你。
注意:我想出了使用 Lambda 的方法:
temp2 %>%
select(c18basic, c18ipug) %>%
summarise(across(everything(), ~ sum(is.na(.x))))
像这样?
dplyr::summarize_all(list(sum= ~sum(is.na(.x), na.rm = T)))
顺便说一下,select()
不是必须的,你可以写成
temp2 %>%
summarise(across(c(c18basic,c18ipug), ~ sum(is.na(.x))))
例如
library(dplyr)
mtcars[1,1] <- NA
mtcars %>%
summarise(across(c(mpg ,cyl), list(sum= ~sum(is.na(.x), na.rm = T))))
结果
mpg_sum cyl_sum
1 0
我想你明白了,看到语法是多么简单,当使用更多功能时,例如
mtcars[1,1] <- NA
mtcars %>%
summarise(across(c(mpg, cyl), list(
Mean = ~ mean(., na.rm = T),
SD = ~ sd(., na.rm = T),
Min = ~ min(., na.rm = T),
Max = ~ max(., na.rm = T),
Obs. = ~ sum(!is.na(.))
)))