如何使用 data.table/ 替代 tidyverse 公式函数来总结缺失数据?
How to summarise missing data with data.table/ alternative to tidyverse formulas function?
如果我想用dplyr
总结多列的缺失,我会做类似
的事情
mtcars %>%
summarise(across(c(cyl,mpg), ~sum(is.na(.))))
我该如何处理 data.table
。我知道 summarise + across
部分应该用 lapply + .SDcols
处理(在 https://atrebas.github.io/post/2019-03-03-datatable-dplyr/#select-columns 之后),但我不知道如何引入像 ~sum(is.na(.))
这样的函数组合
谢谢!
使用 data.table
,在 .SDcols
中指定感兴趣的列,使用 lapply
遍历 Data.table (.SD
) 的子集,应用获取摘要输出的函数
library(data.table)
nm1 <- c('cyl', 'mpg')
as.data.table(mtcars)[, lapply(.SD, function(x) sum(is.na(x))), .SDcols = nm1]
# cyl mpg
#1: 0 0
tidyverse
语法中的 ~
是 function(x)
的 shorthand lambda 语法
tidyverse 语法可以在 data.table
中使用,但它不会 return 和 data.table
as.data.table(mtcars)[, .SD %>%
summarise(across(c(cyl, mpg), ~ sum(is.na(.))))]
# cyl mpg
#1 0 0
如果我想用dplyr
总结多列的缺失,我会做类似
mtcars %>%
summarise(across(c(cyl,mpg), ~sum(is.na(.))))
我该如何处理 data.table
。我知道 summarise + across
部分应该用 lapply + .SDcols
处理(在 https://atrebas.github.io/post/2019-03-03-datatable-dplyr/#select-columns 之后),但我不知道如何引入像 ~sum(is.na(.))
谢谢!
使用 data.table
,在 .SDcols
中指定感兴趣的列,使用 lapply
遍历 Data.table (.SD
) 的子集,应用获取摘要输出的函数
library(data.table)
nm1 <- c('cyl', 'mpg')
as.data.table(mtcars)[, lapply(.SD, function(x) sum(is.na(x))), .SDcols = nm1]
# cyl mpg
#1: 0 0
tidyverse
语法中的 ~
是 function(x)
tidyverse 语法可以在 data.table
中使用,但它不会 return 和 data.table
as.data.table(mtcars)[, .SD %>%
summarise(across(c(cyl, mpg), ~ sum(is.na(.))))]
# cyl mpg
#1 0 0