我有一个很大的数据框,我想按另一个数据框列进行筛选,但保留分组信息以通知筛选.我想按ID列进行筛选,但使用Year列来通知与其他数据帧的分组.在我当前的示例中,group_by调用不能跨数据帧工作,因为我只按一列进行过滤.请记住,我希望这是一个更通用的表达式,可以在包含数十万行的数据集上使用,因此显式写出所有可能的Year和ID筛选组合是不实际的.下面是我的例子:

df_filter<-data.frame(year=c(20,20,20,21,21,21),ID=seq(1:6))

df_all<-data.frame(year=c(20,20,20,21,21,21), ID=c(1,2,4,3,5,6))

filtered<-df_all %>% 
  group_by(year) %>% 
  filter(ID %in% df_filter$ID)

> filtered
   year    ID
1    20     1
2    20     2
3    20     4
4    21     3
5    21     5
6    21     6

***desired result***
   year    ID
1    20     1
2    20     2
3    21     5
4    21     6

谢谢!

推荐答案

使用dplyr::semi_join():

library(dplyr)

semi_join(df_all, df_filter)
# Joining with `by = join_by(year, ID)`
  year ID
1   20  1
2   20  2
3   21  5
4   21  6

R相关问答推荐

在ubuntu 22.04上更新到R4.4后包安装出现编译错误

提取rame中对应r中某个变量的n个最小正值和n个最大负值的条目

过滤器数据.基于两列的帧行和R中的外部向量

在"gt"表中添加第二个"groupname_col",而不连接列值

如何从R中的字符串元素中减go 一个数字?

如何在编辑列时更新可编辑数据表,并使用该表在Shiny中执行连续计算

使用tidy—select创建一个新的带有mutate的摘要变量

将. xlsx内容显示为HTML表

绘制采样开始和采样结束之间的事件

从圆到R中的多边形的标绘雷达图

使用RSelenium在R中抓取Reddit时捕获多个标签

TreeNode打印 twig 并为其上色

随机森林的带Shap值的蜂群图

使用ggplot2中的sec_axis()调整次轴

循环遍历多个变量,并将每个变量插入函数R

按两个因素将观测值分组后计算单独的百分比

TidyVerse中长度不等的列结合向量

如何更改包中函数中的参数?

将仪表板中的值框大小更改为Quarto

如何在R中添加标识连续日期的新列