Это работает,
Использование library(tidyverse)
и library(stringr)
,
df <- data.frame(datetime = c("2018-08-23 11:03:25 0300", "2018-08-17 12:54:09 0300", "2018-08-07 17:15:29 0400", "2018-08-07 10:41:30 0400", "2018-08-07 10:37:37 0400", "2018-08-03 10:36:49 0400", "2018-07-26 12:52:28 0400", "2018-07-10 18:06:02 0400", "2018-07-04 17:52:24 0400", "2018-06-20 15:28:08 0400"),
stringsAsFactors = FALSE)
df2 <- as.tibble(stringr::str_split_fixed(df$datetime, " ", 3)) %>%
mutate(V3 = -((as.numeric(V3)/100)-4)) %>%
mutate(V4 = as.numeric(stringr::str_split_fixed(V2, ":", 3)[,1]) + V3) %>%
mutate(V5 = stringr::str_split_fixed(.$V2, ":", 3)[,2]) %>%
mutate(V6 = stringr::str_split_fixed(.$V2, ":", 3)[,3]) %>%
mutate(V2 = paste(V4, V5, V6, sep = ":")) %>%
mutate(datetime = paste(V1, V2, sep = " ")) %>%
dplyr::select(datetime)
Некоторое объяснение: сначала мы разбиваем столбец datetime
на 3 части, затем мы меняем часовой пояспараметр, в то, что мы можем просто добавить.Затем разделите строки времени и даты, добавьте параметр часового пояса, а затем вставьте все вместе.Это можно сделать в несколько строк, но вы можете хорошо выполнять шаги, выполняя их по одной за раз.