r - 过滤至少具有两个特定值的行

标签 r dataframe filter conditional-statements any

我有一个像这样的数据框。

df
     Languages          Order   Machine    Company
[1]    W,X,Y,Z,H,I       D         D          B
[2]    W,X               B         A          G
[3]    W,I               E         B          A
[4]    H,I               B         C          B
[5]    W                 G         G          C

我想获取语言在 W、H、I 中具有 3 个值中的 2 个的行数。

结果应该是:3,因为第 1 行、第 3 行和第 4 行至少包含 W、H、I 中 3 个值中的 2 个值

最佳答案

您可以在 df$Languages 上使用 strsplit 并与 W、H、I 进行相交。然后获取该结果的长度,并使用which 获取那些超过1 >1 的结果。

sum(lengths(sapply(strsplit(df$Languages, ",", TRUE), intersect, c("W","H","I"))) > 1)
#[1] 3

关于r - 过滤至少具有两个特定值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67583162/

相关文章:

r - 如何计算长格式数据帧的增长率?

python - 另一个 DataFrame 的两个不同日期之间满足特定条件的总行数的计数

r - 基于列的分组创建数据帧子集的向量

Python:如何在不聚合数据帧的情况下进行分组和计数

javascript - 带有文本字段 extjs 的网格过滤器

python - 如何在可变列数匹配的 Pandas 中选择行?

swift - 如何映射数组、使用 if 子句并过滤掉坏数据?

r - rvest::html_text 和 RSelenium::getPageSource 有什么区别?

r - 是什么导致在R v3.5.1中将打印列表的第一个元素括在反引号中?

r - 如何使用 print 或 cat 缩进摘要等多行输出的输出,并保持列对齐?