You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用strptime转换字符日期字符串时为何始终返回NA?

问题原因及解决办法

你的转换代码存在两个关键问题:

1. 日期时间格式字符串错误

原数据的时间部分是11:23这类带冒号的格式,但你写的格式字符串里用了%I%M,没有包含冒号,导致R无法匹配时间结构,直接返回NA。正确的时间格式应该写成%I:%M。

2. 区域设置可能影响月份缩写识别

如果你的R运行环境是中文区域,%b(用于匹配英文月份缩写,比如mar/feb/dec)会无法识别——因为中文区域的月份缩写是中文格式,这也会引发转换失败。


修正后的代码

先临时设置区域为英文(确保月份缩写能被识别),再修改格式字符串重新转换:

# 临时切换到英文区域,解决月份缩写识别问题
Sys.setlocale("LC_TIME", "English")

# 执行正确的日期时间转换
dora$date_time_info2 <- strptime(dora$date_time_info, "%d%b%Y %I:%M %p")

验证结果

运行后查看数据,就能得到正确的日期时间类型结果:

dora
#>    date_time_info       date_time_info2
#> 1 16mar2012 11:23 PM 2012-03-16 23:23:00
#> 2 04feb2000  8:41 AM 2000-02-04 08:41:00
#> 3 25dec2022  5:55 PM 2022-12-25 17:55:00

内容的提问来源于stack exchange,提问作者Kelsey Nason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:55:29