У меня есть кадр данных в R с столбцами subject1
и subject2
(которые содержат заголовки Библиотеки Конгресса). Я хотел бы отфильтровать фрейм данных, проверяя, соответствуют ли темы утвержденному списку. Скажем, например, что у меня есть этот фрейм данных.
data <- data.frame(
subject1 = c("History", "Biology", "Physics", "Digital Humanities"),
subject2 = c("Chemistry", "Religion", "Chemistry", "Religion")
)
И пусть это список одобренных тем.
condition <- c("History", "Religion")
Что я хочу сделать, это фильтр либо subject1, либо subject2:
subset <- filter(data, subject1 %in% condition | subject2 %in% condition)
Это возвращает элементы 1, 2 и 4 из исходного кадра данных, если требуется.
Это лучший способ фильтровать по нескольким полям, используя, а не логику? Кажется, должен быть лучший, более идиоматический способ, но я не знаю, что это такое.
Возможно, более общий способ задать вопрос - сказать, если я объединю subject1 и subject2, есть ли способ тестирования, если какое-либо значение в одном векторе соответствует любому значению в другом векторе. Я бы хотел написать что-то вроде:
subset <- filter(data, c(subject1, subject2) %in% condition)