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
相关产品推荐
相关产品推荐

