R语言字符型时间转换为timestamp时返回NA值如何处理
问题根源
- 转换格式参数与实际字符串结构不匹配:你设置的格式
%d-%m-%Y %H:%M:%S存在两处错误:一是用分隔符-匹配原字符串的空格分隔符,二是用匹配数字月份的%m匹配原字符串里的英文月份缩写Mar。 - 若格式修正后仍返回NA,通常是系统区域设置(locale)为非英文,无法识别英文月份缩写导致。
解决步骤
- 首先使用正确的匹配格式:用空格匹配分隔符,用
%b匹配英文月份缩写,对应格式串为"%d %b %Y %H:%M:%S"
示例代码:
test = "27 Mar 2021 18:28:02" # as.POSIXct 转换 as.POSIXct(test, format = "%d %b %Y %H:%M:%S") # strptime 转换 strptime(test, "%d %b %Y %H:%M:%S")
- 若修正格式后仍返回NA,先临时修改当前R会话的时间区域设置为英文,再执行转换:
# Windows系统执行 Sys.setlocale("LC_TIME", "English") # Linux/Mac系统执行 Sys.setlocale("LC_TIME", "en_US.UTF-8") # 再执行转换即可正常返回结果 as.POSIXct(test, format = "%d %b %Y %H:%M:%S")
注:修改区域设置仅对当前R会话生效,不会改动系统全局配置。
内容的提问来源于stack exchange,提问作者kiely90
相关产品推荐
相关产品推荐

