列长(不包括r中的NA)

pkbketx9  于 2023-03-10  发布在  其他
关注(0)|答案(5)|浏览(214)

假设我有一个data.frame如下:

a  b c
1  5 NA 6
2 NA NA 7
3  6  5 8

我想找出每列的长度,不包括NA列。

a b c 
2 1 3

到目前为止,我试过:

!is.na()                  # Gives TRUE/FALSE
 length(!is.na())          # 9 -> Length of the whole matrix
 dim(!is.na())             # 3 x 3 -> dimension of a matrix
 na.omit()                 # removes rows with any NA in it.

请告诉我怎样才能得到所需的答案。

wgeznvg7

wgeznvg71#

或更快:

colSums(!is.na(dat))
a b c 
2 1 3
wydwbb8l

wydwbb8l2#

虽然求和可能是一个更快的解决方案,但我认为length(x[!is.na(x)])更具可读性。

41ik7eoe

41ik7eoe3#

> apply(dat, 2, function(x){sum(!is.na(x))})
a b c 
2 1 3
cuxqih21

cuxqih214#

我试过NCOL而不是ncol,效果很好。

> nrow(tsa$Region)
NULL
> NROW(tsa$Region)
[1] 27457

> ncol(tsa$Region)
NULL
> NCOL(tsa$Region)
[1] 1
h79rfbju

h79rfbju5#

如果要计算整个数据框中的非NA值,以下内容将有所帮助。

sum(!is.na(df))
[1] 3

然后计算每列中的非NA值,如下所示

colSums(!is.na(df))
a b c 
2 1 3

相关问题