gpt4 book ai didi

r - 根据 R 中单行中的多个必需值匹配/查找行

转载 作者:行者123 更新时间:2023-12-04 09:21:14 24 4
gpt4 key购买 nike

这一定是重复的,但我找不到它。所以就到这里了。

我有一个包含两列的 data.frame。一个包含一个组,另一个包含一个标准。一个组可以包含许多不同的条件,但每行只能包含一个。我想识别包含三个特定条件的组(但会出现在不同的行上。在​​我的例子中,我想识别包含条件“I”、“E”、“C”的所有组。组可以包含任何数字以及这些和其他几个字母的组合。

test <- data.frame(grp=c(1,1,2,2,2,3,3,3,4,4,4,4,4),val=c("C","I","E","I","C","E","I","A","C","I","E","E","A"))

> test
grp val
1 1 C
2 1 I
3 2 E
4 2 I
5 2 C
6 3 E
7 3 I
8 3 A
9 4 C
10 4 I
11 4 E
12 4 E
13 4 A

在上面的示例中,我想识别 grp 2 和 4,因为它们中的每一个都包含字母 E、I 和 C。

谢谢!

最佳答案

这是一个 dplyr解决方案。 %in%被矢量化了 c("E", "I", "C") %in% val返回长度为 3 的逻辑向量。对于目标群体,将该向量传递给 all()返回 TRUE .这是我们的过滤器,我们使用 group_by() 在每个组中运行它.

library(dplyr)
test %>%
group_by(grp) %>%
filter(all(c("E", "I", "C") %in% val))
# Source: local data frame [8 x 2]
# Groups: grp [2]
#
# grp val
# (dbl) (fctr)
# 1 2 E
# 2 2 I
# 3 2 C
# 4 4 C
# 5 4 I
# 6 4 E
# 7 4 E
# 8 4 A

或者如果这个输出更方便(感谢@Frank),
test %>%
group_by(grp) %>%
summarise(matching = all(c("E", "I", "C") %in% val))
# Source: local data frame [4 x 2]
#
# grp matching
# (dbl) (lgl)
# 1 1 FALSE
# 2 2 TRUE
# 3 3 FALSE
# 4 4 TRUE

关于r - 根据 R 中单行中的多个必需值匹配/查找行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35923311/

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