Выберите подмножество кадра данных по неуникальным идентификаторам - PullRequest
7 голосов
/ 02 апреля 2010

Предположим, у меня есть такой фрейм данных:

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

и вектор с идентификаторами, подобными этому:

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

Как я могу выбрать строки кадра данных, которые соответствуют идентификаторам в v? Я не могу использовать столбец id для имен строк, потому что они не являются уникальными. Когда я пытаюсь это сделать, я получаю:

 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’ 

Ответы [ 2 ]

15 голосов
/ 02 апреля 2010

Используйте

df[df$id %in% v,]
11 голосов
/ 03 апреля 2010

Это должно делать то, что вы хотите:

ndx = which(df$id %in% v)
df[ndx,]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...