You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何优雅筛选符合多组双匹配条件的data.frame行生成新数据框

R多组配对条件筛选数据框实现方案

你需要匹配多组「出生年份-毕业年份」的固定配对,推荐用匹配表关联的方式实现,比写冗长的条件判断更易维护,代码也更简洁。

方法1:tidyverse 方案(推荐)

通过内连接匹配预设的配对条件表,后续调整条件只需修改匹配表即可,适合配对条件较多的场景:

library(dplyr)

# 构造你的配对条件表
match_keys <- tibble(
  birth_year = c(1987, 1990, 1993, 1998),
  graduation_year = c(2005, 2008, 2011, 2016)
)

# 内连接直接筛选出同时匹配两个字段的行
df_new <- inner_join(df, match_keys, by = c("birth_year", "graduation_year"))

方法2:base R 方案(无需加载第三方包)

通过拼接两个字段为组合键,用匹配向量筛选行:

# 构造配对组合键向量
match_vec <- paste(c(1987,1990,1993,1998), c(2005,2008,2011,2016), sep = "_")
# 筛选符合条件的行
df_new <- df[paste(df$birth_year, df$graduation_year, sep = "_") %in% match_vec, ]

两种方法运行后得到的结果完全符合预期:

> df_new
  birth_year graduation_year grade
1       1987            2005    56
2       1987            2005   101
3       1990            2008   120
4       1990            2008    96
5       1993            2011    85
6       1998            2016   105

内容的提问来源于stack exchange,提问作者nomi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:36:05