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

R语言按物种分组基于多字段匹配规则过滤数据框行的实现问题

正确实现代码

首先需加载dplyr依赖包:

library(dplyr)

两步过滤的完整管道代码如下:

result <- df %>%
  # 第一步:按species分组,过滤intro_region落在本组native_region取值范围内的行
  group_by(species) %>%
  filter(!intro_region %in% native_region) %>%
  ungroup() %>%
  # 第二步:按species和intro_region分组,同时存在0和1时仅保留invasive为1的行
  group_by(species, intro_region) %>%
  filter(if(all(c(0,1) %in% invasive)) invasive == 1 else TRUE) %>%
  ungroup()

逻辑说明

  • 第一步过滤:原代码错误在于使用all(native_region != intro_region)逐行比对两个列的对应位置值,而非判断当前行的intro_region是否属于本组全部native_region的取值集合,改为!intro_region %in% native_region即可得到9行的中间预期结果。
  • 第二步过滤:原代码直接写死仅保留invasive为1的行,会把仅存在0的组的行也误删。通过if-else分支判断:若当前组同时存在0和1的取值,仅保留invasive为1的行;否则保留组内所有行,即可得到7行的最终预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:15:02