R导入dd/mm/yyyy格式日期时天数被误识别为年份的问题咨询
问题根源
你的日期转换错误是因为as.Date函数的格式掩码和原数据的日期结构不匹配:
原数据格式为dd/mm/yyyy(日/月/四位数年份),你使用的"%m/%d/%y"存在两处错误:
- 顺序颠倒:
%m(月)对应了原数据第一部分的日,%d(日)对应了原数据第二部分的月 - 年份格式错误:小写
%y仅识别2位数年份,原数据为4位完整年份,需要用大写%Y
修复方案
方案1:修正基础as.Date的格式掩码
直接修改转换代码的掩码参数即可:
db <- read.csv("C:\\Users\\.....\\db.csv", sep=";") # 掩码 %d/%m/%Y 对应 日/月/四位数年 结构 db$date <- as.Date(db$date, "%d/%m/%Y")
方案2:使用lubridate包简化转换(无需记格式掩码)
如果不想记忆格式符的写法,可以用lubridate包专门处理日月年顺序的日期:
# 未安装包先执行:install.packages("lubridate") library(lubridate) db$date <- dmy(db$date)
转换完成后可执行class(db$date)验证,返回"Date"即为转换成功,后续即可正常用于匹配、运算等操作,不会再报字符型列的合并错误。
内容的提问来源于stack exchange,提问作者ArTu
相关产品推荐
相关产品推荐

