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
相关产品推荐
相关产品推荐

