2011-12-06 15 views
12

Intenté seleccionar las filas según su ID. Por ejemplo, en un marco de datos llamado test, ID 201 tiene 6 filas de datos, ID 202 tiene 6 filas de datos, y 203, 204 ..... etc.Seleccionar el acondicionamiento de múltiples filas en ID en R

Ahora solo quiero extraer 201 y 202 del conjunto de datos, por lo que debería tener 12 filas en total. Sin embargo

out <- test[test$ID==c(201,202), ] 
out <- subset(test, ID==c(201,202)) 

sólo se devuelve tres 201 y 202 de tres, que son la fila 1, fila 3, Fila de 5 8 10 12.

¿Alguien puede proporcionar algunas sugerencias que cómo puedo hacer esto en R?

+3

En caso de que esté preguntando por qué * * que tienes lo que has hecho, '' == compara elemento a elemento y recicla un vector si se agota. Por lo tanto, alternó la verificación de la columna ID con 201 y 202. La respuesta '% in%' es la mejor, pero también podría haber usado 'subconjunto (prueba, ID == 201 | ID == 202)' – Gregor

Respuesta

21

Quiere %in%, no ==.

out <- test[test$ID %in% c(201, 202), ] 
out <- subset(test, ID %in% c(201, 202)) 
+0

Muchas gracias . – Fred

+0

@MattDowle ¡Este es un gran candidato para la viñeta de data.table-intro o quizás las preguntas frecuentes! Definitivamente pisé esta mina terrestre el fin de semana pasado. –

Cuestiones relacionadas