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

如何在R语言中筛选存在超14天追踪间隔的动物ID

解决方法:找出存在超14天追踪间隔的动物ID

方法一:基于已生成的间隔天数列表

你已经通过tapply得到了每个ID的追踪间隔列表delta.days.2015,不用写循环,直接用sapply结合any()就能快速筛选出目标ID:

# 筛选存在超过14天间隔的动物ID
ids_over_14 <- names(delta.days.2015)[sapply(delta.days.2015, function(x) any(x > 14, na.rm = TRUE))]

# 查看结果
ids_over_14

逻辑说明:

  • 用sapply遍历每个ID的间隔天数向量
  • any(x > 14)检查该ID是否有至少一次间隔超过14天
  • 最后提取符合条件的ID名称
  • na.rm = TRUE用于处理可能的缺失值,数据无缺失可省略

方法二:直接从原数据处理(更高效)

如果不想提前生成间隔列表,也可以直接在原数据集上用dplyr一步完成,流程更直观:

library(dplyr)

ids_over_14 <- data2015v2 %>%
  group_by(ID) %>%
  # 计算当前记录与上一条记录的间隔天数
  mutate(delta_days = as.integer(date - lag(date))) %>%
  # 筛选出间隔超过14天的行
  filter(delta_days > 14) %>%
  # 去重得到唯一的ID
  distinct(ID) %>%
  # 提取ID向量
  pull(ID)

# 查看结果
ids_over_14

这种方法省去了额外生成列表的步骤,直接在原数据上完成分组、计算间隔、筛选和去重,适合处理更大规模的数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:45:24