使用R语言Lubridate包解析日期时间时提示格式匹配失败错误
问题原因
报错All formats failed to parse. No formats found.的核心原因是传入parse_date_time()的格式声明与待解析的字符串实际结构完全不匹配:
原代码使用的格式串%I:%M %p %m/%d/%Y存在两处不匹配:
%m对应阿拉伯数字格式的月份(如09、9),但你的字符串中月份是英文缩写Sept,需要改用匹配英文月份缩写的格式符%b- 你声明了
%m/%d/%Y的斜杠分隔月日年结构,但实际字符串的日年部分结构为[月份缩写] [日], [年],分隔符、字段顺序都不匹配
修复后代码
library(lubridate) # 可选:如果系统语言非英文导致月份缩写识别失败,先运行这句调整时间区域语言 # Sys.setlocale("LC_TIME", "English") datetime_clean <- c("4:10 pm Sept 18, 2021", "12:06 pm Sept 18, 2021", "9:42 am Sept 18, 2021") datetime_parse <- parse_date_time( datetime_clean, orders = "%I:%M %p %b %d, %Y" )
格式符对应说明
%I:匹配12小时制的小时数,对应示例中的4、12、9%M:匹配分钟数,对应示例中的10、06、42%p:匹配上午/下午标识am/pm%b:匹配英文月份缩写Sept%d:匹配日期18- 格式串中的
,原样匹配字符串里日期和年份之间的逗号加空格 %Y:匹配4位数字的年份2021
运行上述代码即可正常解析得到标准POSIXct格式的时间序列,不会再报格式匹配失败错误。
内容的提问来源于stack exchange,提问作者Billy C
相关产品推荐
相关产品推荐

