Как фильтровать строку таблицы на основе внешнего списка?

(1) У меня есть большая таблица, прочитанная в R с более чем 10000 строк и 10 столбцов.

(2) Третий столбец таблицы содержит название больниц. Некоторые из них дублируются или даже больше.

(3) У меня есть список названий больниц, например. 10 из них необходимы для дальнейшего изучения.

(4) Не могли бы вы научить меня, как извлечь все строки на шаге 1 с именами, перечисленными на шаге 3?

Вот более короткий пример моего входного файла;

Patients Treatment Hospital Response 
1        A         YYY      Good 
2        B         YYY      Dead 
3        A         ZZZ      Good 
4        A         WWW      Good 
5        C         UUU      Dead

У меня есть список больниц, которые мне интересны для дальнейшего изучения, т.е. YYY и UUU. Как сгенерировать таблицу вывода следующим образом: R?

Patients Treatment Hospital Response 
1        A         YYY      Good 
2        B         YYY      Dead 
5        C         UUU      Dead

Ответ 1

Используйте оператор %in%.

#Sample data
dat <- data.frame(patients = 1:5, treatment = letters[1:5],
  hospital = c("yyy", "yyy", "zzz", "www", "uuu"), response = rnorm(5))

#List of hospitals we want to do further analysis on
goodHosp <- c("yyy", "uuu")

Вы можете либо индексировать непосредственно в свой объект data.frame:

dat[dat$hospital %in% goodHosp ,]

или используйте команду подмножества:

subset(dat, hospital %in% goodHosp)