Как отфильтровать строку таблицы по внешнему списку? - PullRequest
13 голосов
/ 07 апреля 2011

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

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

(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

Ответы [ 2 ]

22 голосов
/ 07 апреля 2011

Используйте оператор %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)
2 голосов
/ 21 ноября 2018

Использование dplyr

Настройка данных --- с использованием @ Chase выборочных данных.

#Sample data
df <- 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")

Теперь фильтруйте данные, используя dplyr filter

library(dplyr)
df %>% filter(hospital %in% goodHosp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...