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

R语言:筛选同时存在百分比<13和>13观测的物种分组

解决方案:筛选同时包含小于和大于13的百分比的物种分组

错误原因分析

你之前的代码逻辑存在问题:filter(any(percentage < 13 & percentage >13)) 是在找单个观测同时满足小于13且大于13,这在逻辑上不可能成立,因此any()永远返回FALSE,最终得到空数据框。

正确代码实现

要筛选出组内至少存在一个百分比<13,且至少存在一个百分比>13的物种,需要将两个条件分开用any()判断,再用&连接:

library(dplyr)

df <- data.frame(
  species = c("dog", "dog", "dog", "cat", "cat", "fish", "fish"),
  percentage = c(12, 13, 19, 20, 12, 10, 50)
)

# 筛选同时包含<13和>13的物种分组
df %>%
  group_by(species) %>%
  filter(any(percentage < 13) & any(percentage > 13)) %>%
  ungroup()

匹配预期结果的补充调整

如果你的预期是仅保留dog组,说明实际需求可能还包含“组内存在等于13的观测”这一条件,此时可以在筛选逻辑中加入any(percentage == 13):

df %>%
  group_by(species) %>%
  filter(any(percentage < 13) & any(percentage > 13) & any(percentage == 13)) %>%
  ungroup()

运行上述代码后,会仅保留dog组的所有观测,符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:20:16