R语言时间序列分析:因子格式日期转Date格式出错求助
R语言日期列转换失败的原因及解决办法
出错原因
- 使用
as.Date()时未指定匹配的format参数:该函数默认只识别YYYY-MM-DD这类格式,而你的日期是月份全称-日期-年份(比如April-01-2015),格式不匹配导致解析失败。 - 使用
ymd()函数时用错了解析规则:ymd()是按年-月-日的顺序解析日期,你的数据是月-日-年的顺序,规则不匹配自然返回错误结果。
解决办法
方法1:用base R的as.Date()指定格式
直接给as.Date()传入对应格式参数"%B-%d-%Y"(%B匹配月份全称,%d匹配两位日期,%Y匹配四位年份):
data$Date <- as.Date(data$Date, format = "%B-%d-%Y")
方法2:用lubridate包的mdy()函数
lubridate包针对不同日期顺序提供了专门函数,mdy()就是用来解析月-日-年格式的日期:
# 先加载包 library(lubridate) data$Date <- mdy(data$Date)
额外检查
如果转换后仍有错误,先检查日期列的所有唯一值,确认格式统一:
unique(data$Date)
排除存在拼写错误的月份(比如把April写成Aprl)或非标准格式的日期。
内容的提问来源于stack exchange,提问作者wuhuulu
相关产品推荐
相关产品推荐

