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

野生动物研究GPS数据筛选:保留每小时2条记录的方法求助

解决方案:直接筛选保留每小时有2条记录的行

我懂你的痛点——之前用汇总统计的方式能筛选出符合条件的小时,但没法直接保留原始GPS数据行来计算Net_Displacement这类需要原始点的指标。其实用dplyr的分组过滤就能直接解决这个问题,完全不需要迂回:

# 从原始数据中筛选出每小时有2条记录的所有行
filtered_deer <- master_deer %>%
  # 按你的层级结构分组:个体ID+年+月+日+小时
  group_by(COLLAR_ID, Year, Month, Day, Hour) %>%
  # 只保留分组内记录数等于2的组(也就是每小时有2条GPS点的组)
  filter(n() == 2) %>%
  # 取消分组,回到常规数据框结构
  ungroup()

为什么这个方法管用?

  • group_by()会把你的数据按指定的层级(个体、年、月、日、小时)拆分成一个个小分组
  • filter(n() == 2)会检查每个分组的行数,只有行数恰好为2的分组里的所有原始行才会被保留,完美剔除了那些每小时只有1条记录的分组
  • 最后用ungroup()是为了避免后续操作时意外保留分组状态

这样处理后,filtered_deer就是你要的总文件——只包含每小时有2条GPS位置记录的所有原始数据,你可以直接用它来计算Net_Displacement或者其他需要原始坐标的指标啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:48:38