有效地将日期列的小时更改为另一个数据框列 R 的值

Efficiently change hour of date column to value of another dataframe column R

目前正在清理接近 1500 万行的数据子集。最终将使用接近 120M 行的完整数据集。

我的部分数据是按小时递增的日期,分为两列。一列具有日期 (1/1/2020) 格式,另一列具有与该日期对应的整数形式的小时。

我已经通过以下代码成功实现了我的目标:

library(tibble)
library(lubridate)

df <- tibble(date = rep(c(mdy("1/1/2020")), each = 5), hour = 1:5)

hour(df$date) <- df$hour

到 运行 在我的(相当强大的)机器上,完整的 1500 万行需要 120 秒。我通常不使用这么大的数据集,这对我来说似乎很慢,但我充其量只是一个扶手椅编码员。

这是实现我的目标的合理时间范围吗?如果不是,是否有其他功能或更有效的方法来实现相同的结果?

将 'hour' paste 放入 'date' 列并使用 ymd_h[= 重新转换为 Datetime class 可能更容易14=]

library(dplyr)
library(lubridate)
df %>%
   mutate(date = ymd_h(str_c(date, hour, sep=' ')))