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

R语言:按分组查找最早日期并生成Y/N标识变量

简化分组判断最早日期的R代码写法

原始数据框

Issuer.Name Issue.Date    
name1       01/12/2021    
name2       05/04/2022    
name2       21/10/2021    
name3       08/09/2020    
name4       30/08/2023    
name4       12/05/2021    
name4       18/10/2022    
name5       01/12/2021    

需求说明

按Issuer.Name分组,给每条记录新增标记列First.Issue:当该条的Issue.Date是分组内最早日期时标记为"Y",否则为"N",期望结果如下:

Issuer.Name Issue.Date First.Issue
name1       01/12/2021 Y    
name2       05/04/2022 N    
name2       21/10/2021 Y    
name3       08/09/2020 Y    
name4       30/08/2023 N    
name4       12/05/2021 Y    
name4       18/10/2022 N    
name5       01/12/2021 Y    

原始实现代码

用户原本的实现代码:

df <- df %>%
        group_by(Issuer.Name) %>% 
        arrange(Issue.Date) %>% 
        mutate(First.Issue.Date = Issue.Date[1]) %>% 
        mutate(First.Issue=case_when(Issue.Date==First.Issue.Date~"Y",.default = "N"))

简化写法

可以合并操作步骤,直接用min()获取分组内最早日期,无需提前排序,简化后代码更紧凑:

df <- df %>%
  group_by(Issuer.Name) %>%
  mutate(First.Issue = if_else(Issue.Date == min(Issue.Date), "Y", "N")) %>%
  ungroup() # 可选,不需要保留分组状态时取消分组

简化点说明

  • 用min(Issue.Date)直接提取每组最早日期,省去arrange排序和中间辅助列的创建
  • 二元判断场景下,if_else比case_when写法更简洁
  • 最后添加ungroup()可以避免后续操作受分组状态影响,根据实际需求选择是否保留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:35:19