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

R语言lubridate及as.Date解析月份缩写日期出现NA异常问题

问题原因排查及解决方案

1. as.Date/as_date转换全返回NA的核心原因

该问题由系统时间区域设置(locale)不匹配导致:%b 是R中对应月份缩写的格式化占位符,默认匹配当前系统locale下的月份缩写,若系统默认语言不是英文,%b 无法识别 "Apr" 这类英文月份缩写,就会统一返回NA。

解决代码如下:

# 先修改时间区域为英文(二选一即可)
# Windows系统用:
Sys.setlocale("LC_TIME", "English")
# Mac/Linux系统用:
# Sys.setlocale("LC_TIME", "en_US.UTF-8")

cc <- c("Apr 02 2021", 
        "Apr 09 2021", 
        "Apr 16 2021", 
        "Apr 23 2021", 
        "Apr 30 2021")
# 再执行转换即可正常输出结果
as.Date(cc, format = "%b %d %Y")
lubridate::as_date(cc, format = "%b %d %Y")

2. lubridate::mdy额外生成NA的问题

  • 核心诱因1:mdy本身是专门识别「月-日-年」顺序日期的解析函数,不需要额外指定format参数,多余传入的格式参数会干扰解析逻辑
  • 核心诱因2:字符串可能存在隐藏空白、不可见字符,可先做清洗再解析

解决代码如下:

# 先清洗字符串空白,直接用mdy解析即可,无需传入format
lubridate::mdy(trimws(cc))

如果不想修改全局locale,也可以直接在解析函数内指定区域参数:

lubridate::parse_date_time(cc, orders = "mdy", locale = "English")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:15:03