From 2cc73985aaafcf1a9fb7f86295107546b6806cbe Mon Sep 17 00:00:00 2001 From: JulioV Date: Thu, 31 Oct 2019 10:05:40 -0400 Subject: [PATCH] Refactor readable_datetime --- src/data/readable_datetime.R | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/data/readable_datetime.R b/src/data/readable_datetime.R index a1c85802..ea5b08b7 100644 --- a/src/data/readable_datetime.R +++ b/src/data/readable_datetime.R @@ -7,8 +7,19 @@ sensor_output <- snakemake@output[[1]] timezone_periods <- snakemake@params[["timezone_periods"]] fixed_timezone <- snakemake@params[["fixed_timezone"]] +split_local_date_time <- function(data){ + return(data %>% + separate(local_date_time, c("local_date","local_time"), "\\s", remove = FALSE) %>% + separate(local_time, c("local_hour", "local_minute"), ":", remove = FALSE, extra = "drop") %>% + mutate(local_hour = as.numeric(local_hour), + local_minute = as.numeric(local_minute), + local_day_segment = case_when(local_hour %in% 0:5 ~ "night", + local_hour %in% 6:11 ~ "morning", + local_hour %in% 12:17 ~ "afternoon", + local_hour %in% 18:23 ~ "evening"))) +} if(!is.null(timezone_periods)){ - timezones <- read.csv(timezones) + timezones <- read.csv(timezone_periods) tz_starts <- timezones$start output <- input %>% mutate(timezone = findInterval(timestamp / 1000, tz_starts), # Set an interval ID based on timezones' start column @@ -17,28 +28,13 @@ if(!is.null(timezone_periods)){ timezone = as.character(timezone)) %>% rowwise() %>% mutate(utc_date_time = as.POSIXct(timestamp/1000, origin="1970-01-01", tz="UTC"), - local_date_time = format(utc_date_time, tz = fixed_timezone, usetz = F)) %>% - separate(local_date_time, c("local_date","local_time"), "\\s", remove = FALSE) %>% - separate(local_time, c("local_hour", "local_minute"), ":", remove = FALSE, extra = "drop") %>% - mutate(local_hour = as.numeric(local_hour), - local_minute = as.numeric(local_minute), - local_day_segment = case_when(local_hour %in% 0:5 ~ "night", - local_hour %in% 6:11 ~ "morning", - local_hour %in% 12:17 ~ "afternoon", - local_hour %in% 18:23 ~ "evening")) - + local_date_time = format(utc_date_time, tz = timezone, usetz = F)) + output <- split_local_date_time(output) write.csv(output, sensor_output) } else if(!is.null(fixed_timezone)){ output <- input %>% mutate(utc_date_time = as.POSIXct(timestamp/1000, origin="1970-01-01", tz="UTC"), - local_date_time = format(utc_date_time, tz = fixed_timezone, usetz = F)) %>% - separate(local_date_time, c("local_date","local_time"), "\\s", remove = FALSE) %>% - separate(local_time, c("local_hour", "local_minute"), ":", remove = FALSE, extra = "drop") %>% - mutate(local_hour = as.numeric(local_hour), - local_minute = as.numeric(local_minute), - local_day_segment = case_when(local_hour %in% 0:5 ~ "night", - local_hour %in% 6:11 ~ "morning", - local_hour %in% 12:17 ~ "afternoon", - local_hour %in% 18:23 ~ "evening")) + local_date_time = format(utc_date_time, tz = fixed_timezone, usetz = F)) + output <- split_local_date_time(output) write.csv(output, sensor_output) }