使用dplyr基于列值过滤行:筛选同时满足进出口条件的国家与物种记录
dplyr双维度分组过滤实现方案
你只需要将原有分组维度从仅Country调整为Country+Species双维度分组,再做条件判断即可,代码示例如下:
library(dplyr) # 构造测试数据(实际使用时替换为你自己的数据集即可) df <- structure(list(Country = c("A", "B", "B", "C", "C", "C", "D"), Year = c(2001, 2001, 2004, 2003, 2005, 2006, 2007), Quantity = c(10, 50, 20, 30, 40, 60, 290), Description = c("Frozen", "Fresh", "Frozen", "Frozen", "Fresh", "Frozen", "Fresh"), `Import/Export` = c("Export", "Import", "Export", "Import", "Export", "Import", "Import"), Species = c("X", "X", "Y", "X", "X", "X", "Y")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -7L)) # 核心过滤逻辑 result <- df %>% group_by(Country, Species) %>% filter(all(c("Import", "Export") %in% `Import/Export`)) %>% ungroup()
逻辑说明
group_by(Country, Species):将数据按「国家+物种」的组合拆分独立分组,每个分组对应同一个国家下同一个物种的所有进出口记录filter(all(c("Import", "Export") %in%Import/Export)):仅保留分组内同时存在进口、出口两类记录的所有行,注意Import/Export列名包含特殊字符,需要用反引号包裹避免语法报错- 最终输出和预期一致,仅返回国家C的3条符合条件的记录
内容的提问来源于stack exchange,提问作者Gabriel Liu
相关产品推荐
相关产品推荐

