R语言中如何将字符型日期列正确转换为日期类型?
解决R中日/月/年格式字符型日期转日期类型的问题
嘿,这个问题我之前也碰到过!原因很简单:as.Date()函数默认的解析格式是%Y-%m-%d(也就是年-月-日的顺序),但你的日期字符串是日/月/年(%d/%m/%Y)的格式,所以R会把第一个数字当成年份,第二个当月份,第三个当日,才出现了0025-04-20这种离谱的日期。
给你两个简便的解决方法:
方法一:用as.Date()指定格式
直接在函数里加上format参数,明确告诉R你的日期结构:
attest$datemailing <- as.Date(attest$datemailing, format = "%d/%m/%Y")
这样R就能正确识别日、月、年的顺序,转换出正常的日期类型了。
方法二:用lubridate包自动识别
如果你经常处理各种格式的日期,推荐用lubridate包的dmy()函数,它专门针对日-月-年格式的日期做了优化,不用手动写格式:
# 第一次使用需要先安装包 install.packages("lubridate") library(lubridate) attest$datemailing <- dmy(attest$datemailing)
这个包还有ymd()、mdy()等函数,对应不同的日期顺序,用起来特别省心。
如果之后你需要把日期转换成特定的字符串格式输出(比如YYYY-MM-DD),可以用format()函数:
format(attest$datemailing, "%Y-%m-%d")
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

