首页 > 解决方案 > 使用 sparklyr 拆分日期和时间变量

问题描述

我正在尝试处理 spark 数据框中的日期和时间变量 (dttm)。我正在使用 sparklyr 和 dplyr。这是我的问题...

相关列的每一行都采用以下格式:

我想将此日期和时间列 (dttm) 拆分为两列:

所以首先,我使用 regexp_replace 和 mutate 来创建时间列:

spark_df %>% mutate(time = regexp_replace(date_and_time, "^[^_]* ", ""))

这是我在新专栏“时间”中获得的内容:

所以代码几乎可以工作,唯一的问题是前两个数字转换为 00。

标签: rapache-sparkdatetimedplyrsparklyr

解决方案


如果它不能解决您的问题,这可能是一个很好的起点。

dates <- data.frame(date = 
    c("2018-06-11 22:06:45", "2018-06-11 22:07:45", "2019-06-11 22:06:45"))
tbl <- copy_to(sc, dates)

tbl %>% mutate(new_date = as.POSIXct(date)) %>%
    mutate(day = as.Date(new_date), 
    time = paste0(hour(new_date), ":", minute(new_date), ":",
                       second(new_date))) 

#   date                new_date            day        time
#   <chr>               <dttm>              <date>     <chr>
# 1 2018-06-11 22:06:45 2018-06-11 12:06:45 2018-06-11 22:6:45
# 2 2018-06-11 22:07:45 2018-06-11 12:07:45 2018-06-11 22:7:45
# 3 2019-06-11 22:06:45 2019-06-11 12:06:45 2019-06-11 22:6:45

推荐阅读