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

R语言如何筛选同时有chick.present为yes和no记录的个体所有行

实现思路

核心逻辑是先按signaller ID分组,校验每个分组下的chick.present列是否同时包含yes和no两个取值,最终仅保留符合校验规则的分组对应的全部行。

方法1:dplyr包实现(代码更简洁易读)

如果已经安装tidyverse系列包,推荐用该方案:

# 加载依赖包
library(dplyr)

filtered_data <- presence.data %>%
  # 按个体ID分组
  group_by(signaller.ID) %>%
  # 仅保留同时包含yes、no两类记录的分组
  filter(all(c("yes", "no") %in% chick.present)) %>%
  # 解除分组,避免影响后续数据操作
  ungroup()

方法2:Base R实现(无需加载额外依赖)

不想装第三方包可以用原生语法实现:

# 第一步:筛选出同时有yes、no记录的合格个体ID
valid_id <- names(which(apply(table(presence.data$chick.present, presence.data$signaller.ID), 2, function(x) all(x > 0))))

# 第二步:按合格ID筛选全表行
filtered_data <- presence.data[presence.data$signaller.ID %in% valid_id, ]

你给出的示例运行以上代码后,会仅保留ID.4对应的所有35行记录,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 23:09:00