假设我有data.frame
如下:
a b c
1 5 NA 6
2 NA NA 7
3 6 5 8
我想找到每列的长度,不包括NA' s。答案看起来应该是
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.
请告诉我如何获得所需的答案。
答案 0 :(得分:10)
或更快:
colSums(!is.na(dat))
a b c
2 1 3
答案 1 :(得分:2)
> apply(dat, 2, function(x){sum(!is.na(x))})
a b c
2 1 3
答案 2 :(得分:0)
虽然总和可能是一个更快的解决方案,但我认为length(x[!is.na(x)])
更具可读性。
答案 3 :(得分:0)
我尝试了NCOL而不是ncol而且它有效。
> nrow(tsa$Region)
NULL
> NROW(tsa$Region)
[1] 27457
> ncol(tsa$Region)
NULL
> NCOL(tsa$Region)
[1] 1