2013-09-27 6 views
0

Таким образом у меня есть dataframe, который имеет даты столбцы и все столбцы могут иметь различные форматыИзменить формат даты в R

> DateCol1  DateCol2  DateCol3  DateCol4  DateCol5 
> 24-08-2011 2011-12-24  08/1900/24 12/13/2011 Jan 31 1895 

Я знаю, что я могу использовать strptime/as.Date/as.POSIXct для каждый из них индивидуально, но поскольку фреймворк будет создан во время выполнения, я не буду знать содержимое заранее

Так как же преобразовать все из них в формат R по умолчанию в общей функции/инструкции?

+0

'lubridate' является вашим другом. 'install.packages (" lubridate ")' –

+0

Независимо от того, какой пакет вы используете, эта задача звучит так, будто она граничит с невозможным сделать автоматически. Как определить, является ли «01-02-2013» «1 февраля» или «2 января» без по крайней мере некоторого ввода от вас? – thelatemail

+0

вы правы, и я думаю, мне, возможно, придется придумать некоторые предопределенные постоянные форматы. – blank

ответ

1

Попробуйте использовать из lubridate пакета:

library(lubridate) 
fmts <- lapply(dat, guess_formats, c("m d y", "d-M-y", "Y-m-d", "m Y d")) 
fmts <- lapply(fmts, "[[", 1) 
as.data.frame(mapply(parse_date_time, x=dat, orders=fmts)) 
+0

Это может быть возможное решение, но все равно зависит от моих знаний обо всех возможных форматах .... но я думаю, что @thelatemail прокомментировал это может быть довольно сложной без какого-либо ввода – blank

+2

, конечно. Вы просите машину принять решение, не передавая всю информацию, необходимую для принятия такого решения. Что работает над 'guess_formats', так это то, что вы можете дать несколько вариантов попробовать, и он вернет то, что сработало (и не получилось). Поиграйте с ним и добавьте некоторые человеческие знания;) –

Смежные вопросы