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

R语言as.Date()转换数据框字符型日期列返回NA如何解决

问题成因

日期转换全返回NA的核心原因是as.Date()中指定的解析格式,和数据框Date列实际存储的字符串日期格式完全不匹配。
你代码中指定的format = "%m-%d-%Y"仅能解析12-25-2023这类「两位月-两位日-四位年、横杠分隔」的日期字符串,但你爬取的澳版疫情数据中,Date列实际存储的是25 Dec 2023这类「两位日 英文月份缩写 四位年、空格分隔」的日期,格式规则对不上就会全部解析失败返回NA。

解决方法

将日期转换行的格式参数替换为和实际数据匹配的规则即可,修正后的完整代码:

library(rvest)
library(dplyr)
dvpact <- "https___covidlive.com.au_report_daily-vaccinations-people_act.html"
dvpactpage <- read_html(dvpact)
dvpactp <- dvpactpage %>% html_nodes("table.DAILY-VACCINATIONS-PEOPLE") %>% html_table() %>% .[[1]]
# 仅修改这一行的format参数
dvpactp$Date <- as.Date(dvpactp$Date, format = "%d %b %Y")
dvpactp

用到的格式符对应规则:

  • %d:匹配两位数字表示的日期(取值范围01-31)
  • %b:匹配英文缩写形式的月份(如Jan、Feb、Mar)
  • %Y:匹配四位数字表示的年份

如果运行后仍有个别值解析为NA,可以先执行head(dvpactp$Date)查看列内前几行的实际字符串结构,再微调格式参数即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:15:44