R Studio新手求助:as.Date转换日期返回NA问题
解决R中日期转换返回NA的问题
别担心,新手遇到日期格式问题太正常了!我来帮你一步步排查:
1. 修正as.Date()的格式参数
你第一个例子里的格式完全不对哦!你的日期字符串是"23-Nov-1994",对应的格式应该是"%d-%b-%Y":
%d:两位数的日期(23)%b:月份的英文缩写(Nov)%Y:四位数的年份(1994)
正确代码应该是:
date <- c("23-Nov-1994") date <- as.Date(date, format = "%d-%b-%Y")
这样就能得到正确的日期值了。
2. 排查as.POSIXlt()的问题
你写的as.POSIXlt("23-11-1994", format="%d-%m-%Y")格式本身是对的,如果返回NA,大概率是你的输入字符串有隐藏问题——比如不小心多了空格、或者符号不是英文连字符?你可以先检查字符串的实际内容:
# 查看字符串的结构,确认没有隐藏字符 str("23-11-1994") # 或者直接复制粘贴干净的字符串测试 test_date <- as.POSIXlt("23-11-1994", format = "%d-%m-%Y") print(test_date)
如果还是不行,试试用as.POSIXct()替代,效果是一样的:
as.POSIXct("23-11-1994", format = "%d-%m-%Y")
3. 用lubridate简化操作
lubridate本来就是为了简化日期处理设计的,你可能没用到对应的函数。对于"23-Nov-1994"或者"23-11-1994"这种日-月-年格式的字符串,直接用dmy()函数就行:
library(lubridate) # 处理带月份缩写的日期 dmy("23-Nov-1994") # 处理数字月份的日期 dmy("23-11-1994")
这个函数会自动识别月份的缩写或数字,不用手动写格式参数,新手友好度拉满!
内容的提问来源于stack exchange,提问作者Valentina Ruts
相关产品推荐
相关产品推荐

