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

R语言中12小时制转24小时制时输出NA的问题求解

12小时制时间转24小时制的解决方案

基础R实现(无需额外包)

直接用as.POSIXct配合对应格式字符串解析,再转成目标格式:

# 解析12小时制时间为POSIXct类型
accel_dataT$GMT.Time <- as.POSIXct(accel_dataT$GMT.Time, format = "%m/%d/%Y %I:%M:%S %p")
# 格式化为要求的"月-日-年 24小时制时间"字符串
accel_dataT$GMT.Time <- format(accel_dataT$GMT.Time, "%m-%d-%Y %H:%M:%S")

格式参数说明:

  • %m/%d/%Y:匹配输入的"月/日/年"结构
  • %I:对应12小时制的小时数(1-12)
  • %p:识别AM/PM标识
  • 转换后用%H输出24小时制小时数,自动完成PM时段的小时加12,同时将日期分隔符从/换成-。

lubridate包实现(更简洁)

之前用ymd_hms无效是因为原数据是月-日-年顺序,改用mdy_hms即可:

library(lubridate)
# 解析时间
accel_dataT$GMT.Time <- mdy_hms(accel_dataT$GMT.Time)
# 格式化输出
accel_dataT$GMT.Time <- format(accel_dataT$GMT.Time, "%m-%d-%Y %H:%M:%S")

验证结果

处理后的数据框GMT.Time列会变成:

[1] "5-29-2024 13:12:36" "5-29-2024 13:12:38"

之前代码失效的原因

  • as.POSIXct用错了格式:你写的%Y-%m-%d %H:%M:%OS对应"年-月-日 24小时制时间",和原数据的"月/日/年 12小时制带AM/PM"完全不匹配,所以解析失败返回NA。
  • ymd_hms顺序错误:这个函数期望输入是"年-月-日"开头的时间,原数据是"月/日/年",自然解析不了。
  • chron::times():这个函数只处理纯时间部分(比如"13:12:36"),不支持带日期和AM/PM的完整字符串,所以没用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:08:21