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

如何用R(优先dplyr)按组标记5月31日后连续陆地首行

使用dplyr实现熊登陆抵达日期标记

完全可以用R的dplyr包实现你的需求,以下是具体实现代码和逻辑说明:

步骤1:加载依赖包

首先加载dplyr包:

library(dplyr)

步骤2:数据处理代码

基于你提供的数据集,执行以下代码即可生成预期的Arrival列:

data_processed <- data %>%
  # 按熊的ID分组,确保每个个体的数据单独处理
  group_by(ID) %>%
  # 每个分组内按日期升序排序,保证时序逻辑正确
  arrange(Dates, .by_group = TRUE) %>%
  mutate(
    # 生成辅助列:筛选出5月31日后,当前及后续两天均为Land的行
    is_arrival_candidate = Dates > as.Date("2011-05-31") &
      Position == "Land" &
      lead(Position, 1, default = "") == "Land" &
      lead(Position, 2, default = "") == "Land",
    # 仅标记每个分组中第一个符合条件的行为Arrival,其余为NA
    Arrival = ifelse(row_number() == min(which(is_arrival_candidate)), "Arrival", NA)
  ) %>%
  # 删除辅助列
  select(-is_arrival_candidate) %>%
  # 取消分组
  ungroup()

验证结果

执行上述代码后,打印处理后的数据即可得到预期结果:

print(data_processed)

输出结果与你提供的预期格式完全一致:每个熊在5月31日后首次出现连续3天登陆的首日会被标记为Arrival,其余行均为NA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:25:38