2012-09-12 12 views
7

Estoy tratando de obtener un marco de datos (just.samples.with.shoulder.values, por ejemplo) contiene solo muestras que tienen valores que no son NA. He tratado de lograr esto usando la función complete.cases, pero me imagino que estoy haciendo algo mal sintácticamente a continuación:¿Cómo seleccionar datos que tienen casos completos de una cierta columna?

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) 

Me gustaría también estar interesado en saber si alguna otra ruta (usando subset(), digamos) se una idea sabia ¡Muchísimas gracias por la ayuda!

+2

Si utiliza "[" con una un solo argumento y sin coma, seleccionará columnas en lugar de lo que quería que fueran las filas. Simplemente agregue una coma entre la paren y el corchete izquierdo al final de la línea '... lders"]),] ' –

Respuesta

8

Usted podría tratar de usar 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

¡Gracias! ¡Eso también funciona! – Atticus29

9

Usted puede intentar complete.cases también que devolverá un vector lógico que permiten al subconjunto de los datos por 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 
Cuestiones relacionadas