Найти столбцы даты в R. Столбцы даты имеют разные форматы даты. Заменить весь формат даты на дд-ммм-гггг - PullRequest
0 голосов
/ 28 апреля 2020

Создание функции, которая идентифицирует только столбцы даты во фрейме данных. И измените их формат на DD-MMM_YYYY (01-Jan-2020)

 data <- data.frame(Name = c("A","B","C"),
                        Col2 = c("01-01-2020","01-Feb-2020","31/05/2020"),
                col3 = c("05-Feb-2020","13/April/2020","2020-09-17"), 
                        Col4 = c("XYZ","REW","RRRR"),
                        col5 = c("01-Mar-2020","01/01/2019","2020-01-12")) 

func <- function(data) { }

Ожидаемый результат

enter image description here

ПРИМЕЧАНИЕ. Функция должна определить, какие столбцы являются датой, и изменить ее формат на гггг-мм-дд

1 Ответ

2 голосов
/ 28 апреля 2020

Использование tidyverse (см. Примечание):

    date_parser <- function(column){
   if(any(grepl("[-]",column))){

 format(parse_date_time(column,orders = c("dmy","dby","ymd")),"%d-%b-%Y")
     }

   else column
 }
   df %>% 
   mutate_at(-1,~ stringr::str_replace_all(.,"\\/","-")) %>% 
  purrr::map_dfr(~date_parser(.))
# A tibble: 3 x 5
  Name  Col2        col3        Col4  col5       
  <chr> <chr>       <chr>       <chr> <chr>      
1 A     01-Jan-2020 05-Feb-2020 XYZ   01-Mar-2020
2 B     01-Feb-2020 13-Apr-2020 REW   01-Jan-2019
3 C     31-May-2020 17-Sep-2020 RRRR  12-Jan-2020

ПРИМЕЧАНИЕ :

Это не фактическая дата, ее можно снова преобразовать с помощью lubridate хотя я сомневаюсь dttm поддерживает смешанные даты. Следовательно, насколько я знаю, вы все равно будете прибегать к персонажам.

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