2016-04-17 2 views
0

У меня есть кадр данных из 700000 строк, имеющих множество форматов даты, какРешение дата выдачи в г

10/15/2014 (10 в месяц, 15 дата и 2014 год)
10-12-14 (10 - это дата, 12 - месяц и 14 - год)
18.04.2012 (4 - это 18-й день и 2015 год - год)
31-03-16 (31 - дата 03 - месяц и 16 год)

Могут быть другие форматы, но это образец, который я мог видеть.

Могу ли я получить функцию, чтобы узнать уникальные форматы даты и применить одинаковый формат даты для всех, чтобы преобразовать их в один формат dd-mm-yyyy.

+5

будет сложно, как будет неоднозначные даты - это 01-02-2016 первого февраля или второго января. –

+0

(просто чтобы подчеркнуть, 11/12 дней в каждом месяце неоднозначны, поэтому 36% ваших данных будут нежелательными, если нет согласованного формата) – MichaelChirico

+0

Как вы знаете 10/12/14 - это дата/месяц/год, а не месяц/дата/год? – MichaelChirico

ответ

0

Дайте parse_date_time попробовать и настроить его:

library(lubridate) 
x <- c("10/15/2014", "10-12-14", "4/18/2015", "31-03-16") 
parse_date_time(x, c("mdY", "dmy")) 
# [1] "2014-10-15 UTC" "2014-12-10 UTC" "2015-04-18 UTC" "2016-03-31 UTC" 
+0

Как использовать gsub или grepl для фильтрации форматов даты «10-02-14» сразу в моем кадре данных. Я думаю, что это может помочь мне с конкретными датами в одном месте, и я могу преобразовать их в одинаковые форматы. – Ashish

+0

'grep (" \\ d {2} - \\ d {2} - \\ d {2} ", x, инвертировать = T, value = TRUE) 'отфильтровывает' "10-02-14" ',' "09-02-10" и т. Д. См. Справку в '' \ 'регулярное выражение \' '. – lukeA