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

如何统一R数据框中格式不规范的时间输入?

统一时间格式的R语言实现

先构造你的示例时间向量:

times <- c("450pm", "10:00am", "245pm", "9am", "12:30pm")

方法一:使用Base R的gsub分两步处理

先处理3位数字的无冒号时间(如450pm→4:50pm),再处理仅含小时的时间(如9am→9:00am):

# 第一步:给3位数字的时间插入冒号
step1 <- gsub("(\\d)(\\d{2})(am|pm)", "\\1:\\2\\3", times)
# 第二步:给仅小时的时间补全分钟为:00
standard_times <- gsub("(\\d)(am|pm)", "\\1:00\\2", step1)

# 查看结果
standard_times
# [1] "4:50pm"  "10:00am" "2:45pm"  "9:00am"  "12:30pm"

方法二:使用stringr包一步完成

如果习惯用stringr的语法,可以用str_replace_all同时处理两种规则:

library(stringr)

standard_times <- str_replace_all(times, 
  c("(\\d)(\\d{2})(am|pm)" = "\\1:\\2\\3", 
    "(\\d)(am|pm)" = "\\1:00\\2"))

正则规则说明

  • (\\d)(\\d{2})(am|pm):匹配「1位数字+2位数字+am/pm」的格式,通过分组将小时和分钟用冒号分隔
  • (\\d)(am|pm):匹配「1位数字+am/pm」的格式,在小时和时段之间插入:00补全分钟

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:52:08