gpt4 book ai didi

r - 使用OR使用dplyr过滤数据帧的更好方法?

转载 作者:行者123 更新时间:2023-12-03 11:58:20 24 4
gpt4 key购买 nike

我在 R 中有一个数据框,其中包含subject1subject2列(其中包含国会图书馆的主题标题)。我想通过测试主题是否与批准的列表相匹配来过滤数据框。举例来说,我有这个数据框。

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。

这是使用or而不是and逻辑按多个字段进行过滤的最佳方法吗?似乎必须有一种更好,更惯用的方式,但我不知道它是什么。

也许提出这个问题的更通用的方法是说,如果我将subject1和subject2组合在一起,是否可以测试一个 vector 中的任何值是否匹配另一个 vector 中的任何值。我想写一些类似的东西:
subset <- filter(data, c(subject1, subject2) %in% condition)

最佳答案

我不确定这种方法是否更好。至少您不必写列名:

library(dplyr)
filter(data, rowSums(sapply(data, "%in%", condition)))
# subject1 subject2
# 1 History Chemistry
# 2 Biology Religion
# 3 Digital Humanities Religion

关于r - 使用OR使用dplyr过滤数据帧的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21636798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com