Различные форматы даты в одном столбце R - PullRequest
0 голосов
/ 18 мая 2019

У меня есть столбец с различными форматами даты:

Я пытался решить эту проблему с помощью функции в любое время, но я получаю NA для второго формата.

library(anytime)

dates <- c("2017-01-23 00:00:00.000",
           "2017-1-23 00:00:00.000",
           "20.02.2017 11:15",
           "2.2.2017 11:15")

anytime(dates)

[1] "2017-01-23 CET" "2017-01-23 CET" NA               NA   

Есть ли в любом случае, чтобы сделать это

1 Ответ

0 голосов
/ 18 мая 2019

Edit - у меня была опечатка в использовании dmy_hms, где она должна была быть dmy_hm.

Этот подход основан на том, что в строке есть подсказка, какой формат использовать.Здесь я предполагаю, что все даты находятся между 2010 и концом 2019 года, и что все строки день-месяц-год используют точку между частями даты.

library(tidyverse); library(lubridate); 
dates %>% 
  enframe() %>%
  # Edit -- better solution
  mutate(dates = case_when(value %>% str_detect("\\d{4}\\-") ~ ymd_hms(dates), 
                       TRUE ~ dmy_hm(dates)))
# A tibble: 4 x 3
   name value                   dates              
  <int> <chr>                   <dttm>             
1     1 2017-01-23 00:00:00.000 2017-01-23 00:00:00
2     2 2017-1-23 00:00:00.000  2017-01-23 00:00:00
3     3 20.02.2017 11:15        2017-02-20 11:15:00
4     4 2.2.2017 11:15          2017-02-02 11:15:00


  # old solution
  mutate(dates = case_when(value %>% str_detect(".201") ~ dmy_hm(dates), 
                           TRUE ~ ymd_hms(dates)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...