R - Как удалить элементы в векторе, которые удовлетворяют одному из нескольких условий - PullRequest
4 голосов
/ 25 января 2012

У меня есть большой фрейм данных, который содержит столбец имен, и, учитывая природу моих данных, имена повторяются. У меня также есть вектор подмножества этих имен, которые мне нужно исключить из этого кадра данных. Поэтому я хочу определить номер строки для каждого экземпляра, чтобы имя в кадре данных совпадало с именем в списке имен, которые нужно удалить. Вот пример того, что я пытаюсь сделать ... но я не могу заставить код работать. Спасибо!

a=c("tom", "bill", "sue", "jim", "tom", "amy")
b=c(12,15,7,22,45,5)

ab=data.frame(a,b)

ab

drop=which(ab$a==c("tom", "sue")) #only identifies those matching "tom"

drop

ab2=ab[-drop,]

ab2

Ответы [ 2 ]

9 голосов
/ 25 января 2012

вы ищете %in%

drop=which(ab$a %in% c("tom", "sue"))

однако, более кратко:

ab[!ab$a %in% c('tom', 'sue'),]
1 голос
/ 25 января 2012

Вы должны взглянуть на пакет sqldf.Вы можете выполнить SQL-выборку для фреймов данных R.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...