R语言将字符串转换为yyyy-mm-dd格式日期输出NA的问题求助
R语言as.Date转换日期返回NA的排查方案
首先修正你现有代码的2处语法错误:
- format参数使用了中文全角引号,R无法识别
- 格式字符串结尾漏了右引号
修正后的基础正确写法:
ans <- as.Date(S, format = "%Y-%m-%d")
如果修正语法后仍然返回NA,按以下顺序排查:
- 检查待转换字符串
S的格式与你指定的format完全匹配例如:
S = "2024/05/20"要对应写format = "%Y/%m/%d";S = "24-05-20"两位年份要把%Y替换为%y;如果存在其他分隔符(点、空格等)要同步修改format内的分隔符 - 检查
S中是否存在无效日期例如
"2024-02-30"、"2024-13-01"这类不存在的日期,转换默认返回NA,你可以使用lubridate包的ymd()函数提升容错性,无需手动指定格式:# 未安装lubridate包先执行下行注释代码 # install.packages("lubridate") library(lubridate) ans <- ymd(S) - 检查
S的类型是否为因子
因子类型直接转换日期容易出现映射错误,先转成字符串再解析即可:ans <- as.Date(as.character(S), format = "%Y-%m-%d")
内容的提问来源于stack exchange,提问作者Monu
相关产品推荐
相关产品推荐

