2010-04-02 8 views
7

Supongamos que tengo una trama de datos como éste:Seleccionar subconjunto de trama de datos de identificadores de no únicos

df <- data.frame (id = c("a", "b", "a", "c", "e", "d", "e"), n=1:7) 

y un vector con las identificaciones como éste:

v <- c("a", "b") 

¿Cómo puedo seleccionar las filas del marco de datos que coinciden con los identificadores en v? No puedo usar la columna de Id. Para nombres de filas porque no son únicos. Cuando intento que, me sale:

rownames(df) <- df[["id"]] 
Error in `row.names<-.data.frame`(`*tmp*`, value = c(1L, 2L, 1L, 3L, 5L, : 
    duplicate 'row.names' are not allowed 
In addition: Warning message: 
non-unique values when setting 'row.names': ‘a’, ‘e’ 

Respuesta

11

Esto debería hacer lo que quiera:

ndx = which(df$id %in% v) 
df[ndx,] 
+1

que Beat de 30 segundos. :) – Shane

+0

claramente lo que se necesita en SO es un reloj de discapacidad para los expertos, digamos 45 segundos más o menos sus respuestas para sentarse en el servidor antes de publicar, aunque la mayoría de las veces incluso eso no me ayudará. :) – doug

+0

impresionante. +1 para ambos – amarillion

15

Uso

df[df$id %in% v,] 
Cuestiones relacionadas