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

在R中将时间部分为0的datetime与单独时间列合并为完整datetime

实现方案

你可以使用R的lubridate包快速完成时间合并操作,避免手动处理时间格式的兼容问题,具体实现逻辑如下:

1. 依赖安装与示例数据构造

如果尚未安装lubridate,先运行安装命令,再构造符合你描述的测试数据:

# 安装依赖(仅需运行一次)
install.packages(c("lubridate", "dplyr"))

# 加载包
library(lubridate)
library(dplyr)

# 构造测试数据,其中date列已经是datetime格式,时间部分均为0
df <- data.frame(
  ID = c("A", "B"),
  date = as.POSIXct(c("2021-07-26T00:00:00.000+0000", "2021-08-13T00:00:00.000+0000"), tz = "UTC"),
  time = c("1:00AM", "10:00PM")
)

2. 合并时间生成新datetime列

推荐两种实现方式,按需选择即可:

方式1:基于时长叠加实现(适配date已为datetime类型的场景)

直接将Time列的12小时制时间转换为时长,叠加到原Date列上:

df <- df %>%
  mutate(
    # 转换12小时制时间为时长类型
    time_len = hm(parse_date_time(time, "%I:%M%p")),
    # 叠加得到完整datetime
    new_date_time = date + time_len
  ) %>%
  select(ID, new_date_time)
方式2:base R原生实现(无需额外依赖)

直接拼接日期与时间字符串后转换为datetime格式:

df$new_date_time <- as.POSIXct(
  paste0(as.Date(df$date), " ", df$time),
  format = "%Y-%m-%d %I:%M%p",
  tz = "UTC"
)

3. 输出结果

运行后得到的df数据即为你需要的格式:

ID       new_date_time
1  A 2021-07-26 01:00:00
2  B 2021-08-13 22:00:00

注意:请将代码中的时区tz参数替换为你实际业务使用的时区,避免出现时间偏移问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:27:06