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

使用as.Date()转换带月份缩写的字符串为日期时出现<NA>如何解决?

解决带有月份缩写的日期字符串转Date类型问题

问题根源

你用as.Date(dates, format="%m/%d/%y")转换后全为<NA>,核心原因是格式符与实际日期字符串格式不匹配:

  • %m代表数字形式的月份(01-12),但你的dates列是英文月份缩写(如Jan、Feb),两者不对应,导致解析失败。

解决方案

方法1:匹配正确的格式符

根据dates列的实际格式,选择对应格式符:

  • 若格式为Jan 25 2023(缩写月+日+四位年):用%b %d %Y
  • 若格式为25 Jan 2023(日+缩写月+四位年):用%d %b %Y
  • 若格式为January 25 2023(全称月+日+四位年):用%B %d %Y

示例代码(假设格式为Jan 25 2023):

library(dplyr)

# 筛选非空行并转换日期
df <- df %>%
  filter(!is.na(dates), dates != "") %>%
  mutate(DATE = as.Date(dates, format = "%b %d %Y"))

方法2:用lubridate自动识别格式(更省心)

如果不确定具体格式,使用lubridate包的parse_date_time函数,它能自动识别多种常见日期格式:

library(dplyr)
library(lubridate)

df <- df %>%
  filter(!is.na(dates), dates != "") %>%
  # 自动识别包含月份缩写的格式
  mutate(DATE = parse_date_time(dates, orders = c("bdy", "dby", "mdy", "ymd"))) %>%
  # 可选:转成纯Date类型(parse_date_time默认返回POSIXct)
  mutate(DATE = as.Date(DATE))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:30:14