Извлечь DateTime из строки в R - PullRequest
0 голосов
/ 03 мая 2018

Один из столбцов моего фрейма данных содержит DateTime и несколько строковых символов вместе. LIKE:

"<13>1 2018-04-18T10:29:00.581243+10:00 KOI-QWE-HUJ vmon 2318 - -  Some Description..."

Я хочу извлечь из него только часть DateTime, чтобы у меня было что-то вроде этого:

"2018-04-18 10:29:00.581243"

Я попробовал следующее:

as.Date(strptime("<13>1 2018-04-18T10:29:00.581243+10:00 KOI-QWE-HUJ vmon 2318 - - Some Description...", "Date: %Y-%m-%d")) Но это возвращает NA.

Может кто-нибудь, пожалуйста, исправьте это для меня. Заранее спасибо.

EDIT: Я попробовал ниже, чтобы получить дату и время отдельно. Это работает, но мне нужно собрать их в столбец:

Извлечь дату:

as.Date(str_extract(x, "[0-9]{4}-[0-9]{2}-[0-9]{2}"), format="%Y-%m-%d")
> [1] "2018-04-18"

Извлечь время:

str_extract(x, "[0-9]{2}:[0-9]{2}:[0-9]{2}")
> [1] "10:29:00"

Ответы [ 2 ]

0 голосов
/ 03 мая 2018
anytime::anytime(sub(".*?\\s(.*?)\\+.*","\\1",a),tz = "UTC",T)
[1] "2018-04-18 10:29:00 UTC"
0 голосов
/ 03 мая 2018

Вы правы, что вам следует сначала извлечь символьную форму даты и времени. Вот метод, который работает с этим форматом. Он просто использует регулярное выражение и сопоставляет 4 цифры, а затем группы из двух цифр, разделенных -, T и :, где это необходимо. Затем вы можете использовать lubridate::ymd_hms в качестве альтернативы as.Date, поскольку это хороший швейцарский армейский нож в разных форматах даты.

library(stringr)
library(lubridate)
string <- "<13>1 2018-04-18T10:29:00.581243+10:00 KOI-QWE-HUJ vmon 2318 - -  Some Description..."
string %>%
  str_extract("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}") %>%
  ymd_hms()
#> [1] "2018-04-18 10:29:00 UTC"

Создано в 2018-05-02 пакетом Представления (v0.2.0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...