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

在R语言中如何将Jan DD-YY格式日期转换为YYYY-MM-DD格式?

解决方案

方法1:使用base R原生as.Date()指定格式和区域设置

你的日期格式是英文月份缩写+日+两位年,需要明确指定format参数,同时如果你的系统默认locale不是英文,需要临时切换locale保证英文月份缩写能被识别:

# 临时设置英文locale(Windows系统用下面这行)
Sys.setlocale("LC_TIME", "English")
# Mac/Linux系统用下面这行
# Sys.setlocale("LC_TIME", "en_US.UTF-8")

# 转换日期,%b对应英文月份缩写,%d对应日,%y对应两位年份
df$date_col <- as.Date(df$date_col, format = "%b %d-%y")

默认规则下R会把两位年份中00-69识别为2000-2069,70-99识别为1970-1999,如果你的数据年份范围不符合这个规则,转换后可手动调整年份值。

方法2:使用lubridate包转换(兼容性更强)

lubridate包对日期格式的容错性更高,配置更简单:

# 未安装包先执行安装
# install.packages("lubridate")
library(lubridate)

# 直接识别日月年格式
df$date_col <- dmy(df$date_col)
# 自动识别失败可手动指定格式规则
df$date_col <- parse_date_time(df$date_col, orders = "bdy", locale = "en_US.UTF-8")

常见异常排查

  • 检查原始数据是否存在脏值:拼写错误的月份、异常符号、缺失值都会导致返回NA,可筛选出转换失败的值单独处理:
# 提取转换失败的原始值
failed_values <- df$date_col[is.na(as.Date(df$date_col, format = "%b %d-%y"))]
  • 确认导入时日期列没有被识别为factor类型,若是factor需先转成字符再做转换:
df$date_col <- as.Date(as.character(df$date_col), format = "%b %d-%y")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:15:02