有效地将日期列的小时更改为另一个数据框列 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=' ')))
目前正在清理接近 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=' ')))