2010-04-02 7 views
7

Angenommen, ich habe einen Datenrahmen wie diese:Wählen Teilmenge von Datenrahmen durch nicht eindeutige IDs

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

und einen Vektor mit ids wie diese:

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

Wie kann ich die Zeilen auswählen des Datenrahmens, der mit den IDs in v übereinstimmt? Ich kann die id-Spalte nicht für roownames verwenden, da sie nicht eindeutig sind. Wenn ich versuche, dass ich bekommen:

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’ 

Antwort

11

Dies sollte das tun, was Sie wollen:

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

Schlag Sie um 30 Sekunden. :) – Shane

+0

klar, was auf SO benötigt wird, ist eine Handicap-Uhr für die Experten, sagen 45 Sekunden oder so Ihre Antworten zu sitzen auf dem Server vor dem Posten - obwohl die meiste Zeit sogar selbst das wird mir nicht helfen. :) – doug

+0

genial. +1 für beide – amarillion

15

Verwenden

df[df$id %in% v,] 
Verwandte Themen