r - R:如何过滤列,只要它包含值的组合?
问题描述
我有一个这样的df:
VisitID | Item |
1 | A |
1 | B |
1 | C |
1 | D |
2 | A |
2 | D |
2 | B |
3 | B |
3 | C |
4 | D |
4 | C |
在 R 中,只要包含项目 A 和 B,我如何过滤访问 ID?预期结果:
VisitID | Item |
1 | A |
1 | B |
1 | C |
1 | D |
2 | A |
2 | D |
2 | B |
我试过df %>% group_by(VisitID) %>% filter(any(Item == 'A' & Item == 'B'))
但它不起作用..
df <- read_delim("ID | Item
1 | A
1 | B
2 | A
3 | B
1 | C
4 | C
5 | B
3 | A
4 | A
5 | D", delim = "|", trim_ws = TRUE)
解决方案
既然你想要“A”和“B”,你可以使用all
library(dplyr)
df %>% group_by(VisitID) %>% filter(all(c("A", "B") %in% Item))
# VisitID Item
# <int> <chr>
#1 1 A
#2 1 B
#3 1 C
#4 1 D
#5 2 A
#6 2 D
#7 2 B
或者,如果您想any
单独使用它们。
df %>% group_by(VisitID) %>% filter(any(Item == 'A') && any(Item == 'B'))
推荐阅读
- c - 大于 UINT32 的数字的 sprintf 格式说明符
- java - 尝试运行其实现的某些内容时未使用扫描仪
- c# - .net core 2.2 无法处理正文中的加密字符串,即使 mediatype 说 application/json
- php - FPDF 生成单个页面而不是一个大页面
- php - Nginx 重写目录并排除子目录
- node.js - 我应该使用 cookie 还是本地存储将数据持久化到前端?
- html - 如何保持文本与其父 div 的宽度相同?
- android - 是否有移动和穿戴应用程序共享存储?
- android - Flutter 版本解决此特定应用程序上的失败错误
- amazon-dynamodb - 如何使用全局二级索引编写获取方法 DynamoDB?