2013-07-06 7 views
8

Załóżmy, że mam data.frame następująco:Długość kolumny wyłączeniem NA w r

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

chciałbym znaleźć długość każdej kolumny, z wyłączeniem NA użytkownika. Odpowiedź powinna wyglądać

a b c 
2 1 3 

Do tej pory próbowałem:

!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. 

Proszę mi powiedzieć w jaki sposób mogę uzyskać wymaganą odpowiedź.

Odpowiedz

10

lub szybszy:

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

Choć suma ta jest prawdopodobnie szybsze rozwiązanie, myślę, że length(x[!is.na(x)]) jest bardziej czytelny.

Powiązane problemy