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

如何在R中为北极熊数据集标记最终踏上海冰的首次记录行?

在R中标记北极熊最终踏上海冰的起始记录

需求说明

我们需要给每只北极熊的行为记录新增一列,标记最终踏上海冰的起始记录——即该记录是这只熊首次进入海冰区域,且之后再也没有回到陆地的那条记录。

示例数据

先构造与问题一致的示例数据集:

library(dplyr)

bear_data <- tibble(
  Bear.ID = c(rep("A",7), rep("B",8)),
  Region = c("Land","Land","Land","Ice","Ice","Ice","Ice",
             "Land","Ice","Land","Land","Ice","Ice","Ice","Ice")
)

实现方法

使用dplyr按北极熊ID分组后,通过以下逻辑完成标记:

  1. 按记录顺序,判断每条记录之后是否还会出现陆地
  2. 定位到当前记录为海冰、后续无陆地,且是该熊满足此条件的第一条记录

完整代码如下:

result <- bear_data %>%
  group_by(Bear.ID) %>%
  # 标记当前行之后是否还有陆地记录
  mutate(has_land_after = rev(cumsum(rev(Region == "Land"))) > 0) %>%
  # 找到符合条件的起始行,标记为TRUE/FALSE
  mutate(Departure = ifelse(
    Region == "Ice" & !has_land_after & row_number() == min(which(Region == "Ice" & !has_land_after)),
    TRUE, FALSE
  )) %>%
  # 可选:转换成文本标签(对应示例中的"Departure"/"Not Departure")
  mutate(Departure_label = ifelse(Departure, "Departure", "Not Departure")) %>%
  ungroup()

# 查看结果
print(result)

代码解释

  • rev(cumsum(rev(Region == "Land"))) > 0:从后往前累加陆地出现的次数,再反转回原顺序,以此判断每行之后是否还有陆地记录。
  • min(which(Region == "Ice" & !has_land_after)):定位该熊所有"进入海冰且后续无陆地"记录中的最早行位置。
  • 通过ifelse完成最终标记,可按需选择布尔值或文本标签形式。

输出结果

运行后将得到与示例完全匹配的结果:

# A tibble: 15 × 5
   Bear.ID Region has_land_after Departure Departure_label
   <chr>   <chr>  <lgl>          <lgl>     <chr>          
 1 A       Land   TRUE           FALSE     Not Departure  
 2 A       Land   TRUE           FALSE     Not Departure  
 3 A       Land   TRUE           FALSE     Not Departure  
 4 A       Ice    FALSE          TRUE      Departure      
 5 A       Ice    FALSE          FALSE     Not Departure  
 6 A       Ice    FALSE          FALSE     Not Departure  
 7 A       Ice    FALSE          FALSE     Not Departure  
 8 B       Land   TRUE           FALSE     Not Departure  
 9 B       Ice    TRUE           FALSE     Not Departure  
10 B       Land   TRUE           FALSE     Not Departure  
11 B       Land   TRUE           FALSE     Not Departure  
12 B       Ice    FALSE          TRUE      Departure      
13 B       Ice    FALSE          FALSE     Not Departure  
14 B       Ice    FALSE          FALSE     Not Departure  
15 B       Ice    FALSE          FALSE     Not Departure  

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:40:19