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

如何转换DDMMMYYYY格式字符串日期并筛选每人最新记录?

解决分组筛选每人最新日期记录的问题

你的问题核心是日期列未正确转换为日期类型,直接按字符串排序会触发逻辑错误(比如字符串排序时15MAR2020会比31DEC2020靠后,但实际日期更早)。无需拆分日期列,用as.Date()配合正确格式参数就能快速解决:

步骤1:转换日期格式

你的日期格式是日+英文月份缩写+年(如01JAN2021),对应格式符为%d%b%Y:

  • %d:两位数字的日
  • %b:英文月份缩写(JAN/FEB等)
  • %Y:四位数字的年

若你的R环境默认locale不是英文,可能导致转换失败,临时设置英文locale即可:

# Windows系统设置英文locale,mac/Linux可跳过或用对应命令
Sys.setlocale("LC_TIME", "English")

# 转换日期列
df$Date <- as.Date(df$Date, format = "%d%b%Y")

步骤2:分组筛选最新记录

日期转换完成后,用dplyr分组处理即可得到正确结果:

library(dplyr)

# 写法1:排序后取首行
df_updated <- df %>%
  group_by(Person) %>%
  arrange(desc(Date)) %>%
  slice(1) # 比filter(row_number()==1)更简洁

# 写法2:直接筛选日期最大值对应的行(无需排序,效率更高)
df_updated <- df %>%
  group_by(Person) %>%
  filter(Date == max(Date))

最终结果

处理后的数据将保留每人最新日期的记录:

PersonDate
Alex2022-07-15
Beth2020-12-31

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:20:00