使用lubridate的parse_date_time函数mdy格式解析日期失败求助
嘿,我来帮你搞定这个日期解析的问题!
你遇到的核心问题是lubridate格式符的对应关系搞混啦:你用的"mdy"里的m对应的是数字形式的月份(比如12),但你的日期字符串里是月份的英文全称(December),两者不匹配,自然解析失败。
解决方法超简单,把格式参数换成"Bdy"就行——这里的B就是lubridate用来识别英文月份全称的专属格式符。试一下这段代码:
date <- "December 21 2016" date_text <- parse_date_time(date, "Bdy", tz = "UTC") date_text #> [1] "2016-12-21 UTC"
如果之后遇到月份缩写的情况(比如Dec 21 2016),就用小写的b,也就是"bdy"作为格式参数就行。
另外,要是你想让函数更灵活,能适配多种月份格式,还可以给orders参数传入多个可能的格式选项,让lubridate自动匹配:
date_text <- parse_date_time(date, c("Bdy", "mdy", "bdy"), tz = "UTC")
这样不管是全称月份、数字月份还是缩写月份,都能轻松解析啦。
内容的提问来源于stack exchange,提问作者Hendrik
相关产品推荐
相关产品推荐

