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

在R中将无AM/PM标识的时间序列转换为24小时时间格式

R语言时间格式转换解决方案

由于你的数据已经按时间顺序排列,24条记录刚好对应全天24个小时,推荐直接生成标准时间序列赋值,操作最简单且不会出错:

方法1:基于序列生成(推荐)

# 安装加载lubridate包,处理时间更便捷
# install.packages("lubridate")
library(lubridate)

# 生成2021-08-11 00:00:00开始的24小时连续时间序列,直接赋值给timestamp列
df$timestamp <- seq(ymd_hms("2021-08-11 00:00:00"), by = "hour", length.out = 24)

# 若需要保留字符串格式,添加以下行即可
df$timestamp <- as.character(df$timestamp)

方法2:基于原始时间值调整

如果你的数据量更大、不满足刚好24条的场景,可以按规则调整小时值:

library(lubridate)
library(dplyr)

# 先将字符串转为时间格式
df$timestamp <- ymd_hms(df$timestamp)

df <- df %>%
  mutate(
    # 每12条记录为一组,第一组对应0-11点,第二组对应12-23点
    group = (row_number() - 1) %/% 12,
    origin_hour = hour(timestamp),
    new_hour = case_when(
      # 第一组的12点转为0点,其余小时不变
      group == 0 & origin_hour == 12 ~ 0,
      # 第二组所有小时加12,转为下午/夜间的24小时制时间
      group == 1 ~ origin_hour + 12,
      TRUE ~ origin_hour
    ),
    # 更新时间的小时部分
    timestamp = update(timestamp, hour = new_hour)
  ) %>%
  # 删除中间计算的临时列
  select(-group, -origin_hour, -new_hour)

# 转字符串可选
df$timestamp <- as.character(df$timestamp)

两种方法运行后得到的结果都和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:06:04