2013-07-06 11 views
8

Angenommen, dass ich ein data.frame habe wie folgt:Länge von Spalten mit Ausnahme von NA in r

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

Ich mag die Länge jeder Spalte zu finden, mit Ausnahme von NA. Die Antwort sollte aussehen wie

a b c 
2 1 3 

Bisher habe ich versucht:

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

Bitte sagen Sie mir, wie kann ich die gewünschte Antwort.

Antwort

10

oder schneller:

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

Obwohl die Summe wahrscheinlich eine schnellere Lösung ist, denke ich, dass length(x[!is.na(x)]) mehr lesbar ist.

Verwandte Themen