У меня есть это df:
df <- structure(list(Created = structure(6:1, .Label = c("2018-12-27T08:53:32.794-0300",
"2018-12-27T17:46:00.244-0300", "2019-01-17T17:16:08.222-0300",
"2019-01-28T11:52:39.744-0300", "2019-01-28T11:55:34.723-0300",
"2019-02-18T08:59:57.067-0300"), class = "factor"), Updated = structure(c(5L,
3L, 2L, 1L, 4L, 6L), .Label = c("2019-03-04T17:41:30.895-0300",
"2019-03-04T17:41:35.756-0300", "2019-03-08T15:37:32.071-0300",
"2019-03-12T12:25:31.258-0300", "2019-03-12T16:20:48.210-0300",
"2019-03-22T10:40:36.560-0300"), class = "factor"), Resolved = structure(c(5L,
3L, 1L, 2L, 4L, 6L), .Label = c("2019-02-12T11:36:03.678-0300",
"2019-02-27T09:09:58.990-0300", "2019-03-08T15:37:32.065-0300",
"2019-03-12T12:25:31.251-0300", "2019-03-12T16:20:48.203-0300",
"2019-03-22T10:40:36.553-0300"), class = "factor")), row.names = c(14L,
28L, 29L, 30L, 37L, 38L), class = "data.frame")
> df
Created Updated Resolved
14 2019-02-18T08:59:57.067-0300 2019-03-12T16:20:48.210-0300 2019-03-12T16:20:48.203-0300
28 2019-01-28T11:55:34.723-0300 2019-03-08T15:37:32.071-0300 2019-03-08T15:37:32.065-0300
29 2019-01-28T11:52:39.744-0300 2019-03-04T17:41:35.756-0300 2019-02-12T11:36:03.678-0300
30 2019-01-17T17:16:08.222-0300 2019-03-04T17:41:30.895-0300 2019-02-27T09:09:58.990-0300
37 2018-12-27T17:46:00.244-0300 2019-03-12T12:25:31.258-0300 2019-03-12T12:25:31.251-0300
38 2018-12-27T08:53:32.794-0300 2019-03-22T10:40:36.560-0300 2019-03-22T10:40:36.553-0300
И мне нужно преобразовать их все в strptime()
, поэтому для столбца Created
:
Первый шаг: к символу:
df <- df %>% lapply(., as.character)
Второй шаг: сплит.
paste0(substr(df$Created,start=1,stop=10)," ", substr(df$Created,start=12,stop=19)," ",substr(df$Created,start=25,stop=29))
Третий шаг: до strptime()
df2 <- df %>%
separate(Created, into = c("date", "time", "timezone"), sep = " ") %>%
unite(col = Created, c("date", "time"), sep = " ") %>%
mutate(Created = ymd_hms(Created)) %>%
mutate(Created = if_else(timezone %in% "0300", Created + hours(1), Created)) %>%
select(-timezone)
И все идеально:
> df2[1:5,c("Created")]
[1] "2019-02-18 11:59:57 UTC" "2019-01-28 14:55:34 UTC" "2019-01-28 14:52:39 UTC" "2019-01-17 20:16:08 UTC" "2018-12-27 20:46:00 UTC"
Тем не менее, я изо всех сил пытаюсь поместить это в lapply()
функцию, так как это не просто 3 столбца, а почти 30. Любые предложения?