Lubridate ускоряет работу с датой и временем

#r

#r

Вопрос:

Я пытаюсь обратить 04/03/2019 07:22:14 -> 2019-04-03 07:22:14 с упаковкой лубридата. Мой подход работает хорошо, но он очень медленный:

 library(dplyr)
library(lubridate)

df <- data.frame(DateTimeStamp=replicate(9e5,"04/03/2019 07:22:14"), 
stringsAsFactors = F) %>%
  mutate(DateTimeStamp_Changed=as.POSIXct(unlist(lapply(DateTimeStamp, 
function(item) {
    return(as.character(parse_date_time(paste0(
      as.Date(unlist(strsplit(item," "))[1], "%m/%d/%Y"),
      unlist(strsplit(item," "))[2]
    ), orders="ymd HMS")))
  }))))
  

Есть ли какой-нибудь способ ускорить это? Спасибо за любой ваш намек.

Ответ №1:

Вы можете использовать функцию ymd_hms() из библиотеки lubridate

 library(lubridate)
library(dplyr)

"04/03/2019 07:22:14" %>%
    fast_strptime(format = '%d/%m/%Y %H:%M:%S') %>% 
    ymd_hms()
# [1] "2019-03-04 07:22:14 UTC"
  

Комментарии:

1. Большое спасибо! Это намного быстрее.