按组计算的NA计数

时间:2016-02-24 08:06:24

标签: r

我知道R中的以下语法将通过变量给出NAs的计数。我如何通过分组变量对此进行分层?

na_count <-sapply(x, function(y) sum(length(which(is.na(y)))))

1 个答案:

答案 0 :(得分:4)

我们可以使用aggregate

aggregate(.~grp, data=dat, FUN= function(x) sum(is.na(x)))

dplyr

library(dplyr)
dat %>%
    group_by(grp) %>%
    summarise_each(funs(sum(is.na(.)))

或使用data.table

library(data.table)
setDT(dat)[, lapply(.SD,  function(x) sum(is.na(x))), grp]

或者正如@David Arenburg在评论中提到的那样,rowsum是另一种选择,我们可以在总结时按操作进行分组。我们使用+将逻辑矩阵(is.na(dat))强制转换为二进制,因为该函数不适用于逻辑类。

 rowsum(+(is.na(dat)), dat$grp)
相关问题