Длина столбцов, исключая NA в r

предположим, что у меня есть 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.

Пожалуйста, скажите мне, как я могу получить требуемый ответ.

4 ответов


или быстрее :

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

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

хотя сумма, вероятно, является более быстрым решением, я думаю, что length(x[!is.na(x)]) более читабельным.


я попробовал NCOL вместо ncol, и это сработало.

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


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