如何将字符型数据转为Date类?as.Date返回NA的解决方法
解决
as.Date转换日期返回NA的问题 问题原因
你使用的%B格式符对应英文完整月份名称(比如"October"),但R默认的**区域设置(locale)**如果不是英文,就无法识别这类英文月份名,最终返回NA。
解决方法
方法1:临时修改区域设置
转换日期前临时将时间区域设置为英文,转换完成后可恢复原设置:
# 保存当前时间区域设置 old_locale <- Sys.getlocale("LC_TIME") # Windows系统用"English_US.1252",Linux/macOS用"en_US.UTF-8" Sys.setlocale("LC_TIME", "English_US.1252") # 执行日期转换 my_date <- "October 15, 2018" as.Date(my_date, format = "%B %d, %Y") # 恢复原区域设置 Sys.setlocale("LC_TIME", old_locale)
方法2:用lubridate包简化操作
lubridate包的mdy()函数可以自动识别"月-日-年"格式的英文日期,无需手动指定格式,也不受区域设置影响:
# 首次使用先安装包 install.packages("lubridate") library(lubridate) # 直接转换 my_date <- "October 15, 2018" mdy(my_date)
内容的提问来源于stack exchange,提问作者MinChul Park
相关产品推荐
相关产品推荐

