在R语言中将CSV导入的字符型日期转换为日期类型时返回NA的问题求助
解决R中字符型日期转日期类型的问题
嘿,我懂你现在的困扰——明明CSV里的日期是标准的YYYY-MM-DD格式,但转成R的日期类型总是失败对吧?其实问题出在你用的format参数和实际日期的分隔符不匹配!
你现在的日期字符串是"2021-02-21"这种用横杠分隔的格式,但你尝试的as.Date(stripe.df$Date[1], format="%y/%m/%d")或者strptime(..., format="%Y/%m/%d")里用了斜杠作为分隔符,R自然识别不了啦。
给你几个靠谱的解决方法:
方法1:直接用as.Date(最简单)
因为YYYY-MM-DD是R的as.Date()函数默认支持的格式,所以你甚至不用指定format参数,直接运行:
stripe.df$Date <- as.Date(stripe.df$Date)
之后再用str(stripe.df)查看,就能看到$ Date : Date, format: "2021-02-21" "2021-02-22" ...的结果了。
方法2:指定正确的format参数
如果你想明确指定格式,记得把分隔符改成横杠:
stripe.df$Date <- as.Date(stripe.df$Date, format = "%Y-%m-%d")
这里%Y代表4位年份,%m是2位月份,%d是2位日期,和你的日期格式完全匹配。
方法3:用lubridate包简化操作
如果你经常处理日期时间,推荐用lubridate包,它的ymd()函数可以自动识别这种年-月-日格式:
# 第一次用先安装包 install.packages("lubridate") library(lubridate) stripe.df$Date <- ymd(stripe.df$Date)
这个方法容错率更高,哪怕日期格式有小变动也能识别。
额外技巧:导入时直接转成日期类型
下次导入CSV的时候,可以直接用colClasses参数指定日期列的类型,省得事后转换:
stripe.df <- read.csv("your_file.csv", colClasses = c(Date = "Date"))
这样导入后,Date列直接就是Date类型了。
转换完成后,你就可以把这个日期列正常用在绘图(比如ggplot的x轴)、决策树建模等场景啦!
内容的提问来源于stack exchange,提问作者yoavac
相关产品推荐
相关产品推荐

