2012-09-12 13 views
7

Próbuję uzyskać ramkę danych (just.samples.with.shoulder.values, powiedzmy) zawierają tylko próbki, które mają wartości inne niż NA. Starałem się to osiągnąć za pomocą funkcji complete.cases, ale wyobrażam sobie, że robię coś złego składniowo poniżej:Jak wybrać dane, które mają pełne przypadki określonej kolumny?

data <- structure(list(Sample = 1:14, Head = c(1L, 0L, NA, 1L, 1L, 1L, 
0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L), Shoulders = c(13L, 14L, NA, 
18L, 10L, 24L, 53L, NA, 86L, 9L, 65L, 87L, 54L, 36L), Knees = c(1L, 
1L, NA, 1L, 1L, 2L, 3L, 2L, 1L, NA, 2L, 3L, 4L, 3L), Toes = c(324L, 
5L, NA, NA, 5L, 67L, 785L, 42562L, 554L, 456L, 7L, NA, 54L, NA 
)), .Names = c("Sample", "Head", "Shoulders", "Knees", "Toes" 
), class = "data.frame", row.names = c(NA, -14L)) 

just.samples.with.shoulder.values <- data[complete.cases(data[,"Shoulders"])] 
print(just.samples.with.shoulder.values) 

byłbym również zainteresowany, aby wiedzieć, czy jakiejś innej drogi (przy użyciu subset(), powiedzmy) jest mądrzejszy pomysł. Dziękuję bardzo za pomoc!

+2

Jeśli używasz „[” z pojedynczy argument i bez przecinka, będzie wybierał kolumny zamiast żądanych wierszy. Wystarczy dodać przecinek między parenką a lewym kwadratowym nawiasem na końcu linii '... lders"]),] ' –

Odpowiedz

8

Można spróbować użyć is.na:

data[!is.na(data["Shoulders"]),] 
    Sample Head Shoulders Knees Toes 
1  1 1  13  1 324 
2  2 0  14  1 5 
4  4 1  18  1 NA 
5  5 1  10  1 5 
6  6 1  24  2 67 
7  7 0  53  3 785 
9  9 1  86  1 554 
10  10 1   9 NA 456 
11  11 1  65  2 7 
12  12 1  87  3 NA 
13  13 0  54  4 54 
14  14 1  36  3 NA 
+0

Dzięki! To też działa! – Atticus29

9

Można spróbować complete.cases zbyt który zwróci logiczną wektor, który pozwoli na podzbiór danych przez Shoulders

data[complete.cases(data$Shoulders), ] 
# Sample Head Shoulders Knees Toes 
# 1  1 1  13  1 324 
# 2  2 0  14  1 5 
# 4  4 1  18  1 NA 
# 5  5 1  10  1 5 
# 6  6 1  24  2 67 
# 7  7 0  53  3 785 
# 9  9 1  86  1 554 
# 10  10 1   9 NA 456 
# 11  11 1  65  2 7 
# 12  12 1  87  3 NA 
# 13  13 0  54  4 54 
# 14  14 1  36  3 NA 
Powiązane problemy