2010-04-02 2 views
7

Supponiamo che io sono un dataframe come questo:Selezionare sottoinsieme di dataframe da IDS non univoci

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

e un vettore con ID come questo:

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

Come posso selezionare le righe del dataframe che corrisponde agli id ​​in v? Non posso usare la colonna id per i nomi dei giocatori perché non sono unici. Quando provo che, ottengo:

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’ 

risposta

11

Questo dovrebbe fare quello che vuoi:

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

si Beat di 30 secondi. :) – Shane

+0

chiaramente ciò che è necessario su SO è un orologio handicap per gli esperti, diciamo 45 secondi circa le tue risposte per sederti sul server prima di postare, anche se la maggior parte delle volte nemmeno questo mi aiuterà. :) – doug

+0

fantastico. +1 per entrambi – amarillion

15

Usa

df[df$id %in% v,]