繁体   English   中英

如何仅计算 R 中的非空列,同时包含具有稀疏 NA 的列?

[英]How do I count only non-empty columns in R, while included columns with sparse NA?

我有一个这样的矩阵:

A      B      C     D
1      4      5     NA
43     3      NA    NA
85     NA     43    NA
4      2      NA    NA

我想弄清楚如何计算非空列的数量(在这种情况下它将 = 3)。 但是,如果我执行ncol(df) ,我会得到 4。我如何才能只计算不完全为空的列(理想情况下使用基数 R 或 Tidyverse(尽量不要使用太多导入的包)?

我们可以用is.na构建一个逻辑矩阵,获取colSums ,转换为逻辑矩阵。 向量 ( > 0 ) 并sum

sum(colSums(!is.na(m1)) > 0)
[1] 3

或者也可以在data.frame上使用Filter并获取ncol

ncol(Filter(function(x) any(!is.na(x)), as.data.frame(m1)))
[1] 3

数据

m1 <- structure(c(1L, 43L, 85L, 4L, 4L, 3L, NA, 2L, 5L, NA, 43L, NA, 
NA, NA, NA, NA), .Dim = c(4L, 4L), .Dimnames = list(NULL, c("A", 
"B", "C", "D")))

我们可以使用sumsapply

sum(sapply(df, function(y) sum(length(which(is.na(y))))>0))

output:

[1] 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM