有效地将日期列的小时数改变为另一个数据框架列的值。

问题描述 投票:0回答:1

目前正在清理一个接近15M行的数据子集。最终将处理接近1.2亿行的完整数据集。

我的部分数据是以小时为单位的日期,分为两列。一列是日期(112020)格式,另一列是该日期对应的小时,为整数形式。

我用下面的代码成功实现了我的目标。

library(tibble)
library(lubridate)

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

hour(df$date) <- df$hour

在我那台(相当强大的)机器上,要在15M行上运行这个程序需要120秒。我通常不处理这么大的数据集,我觉得很慢,但我充其量只是一个椅子上的编码员。

这是个合理的时间框架来完成我的目标吗?如果不是,有没有其他函数或更有效的方法来完成同样的结果?

r lubridate
1个回答
0
投票

这可能更容易 paste 小时 "进入 "日期 "栏,并重新转换为 Datetime 类与 ymd_h

library(dplyr)
library(lubridate)
df %>%
   mutate(date = ymd_h(str_c(date, hour, sep=' ')))
© www.soinside.com 2019 - 2024. All rights reserved.