2017-01-31 4 views

ответ

0

Вы хотите преобразовать текстовую строку в объект «Дата». Вот один из способов использования пакета lubridate.

library(lubridate) 
ans <- as.Date(parse_date_time('18-Sep-2016',orders = 'dmy')) 
print(ans) 
# [1] "2016-09-18" 
class(ans) 
# [1] "Date" 
+0

Могу ли я передать ему фактор ценностей? Или как я могу обновить data.frame с новыми значениями возврата даты? – jbehrens94

+0

df $ Date <- as.Date (parse_date_time (as.character (df $ Date), orders = 'dmy')) – Julius

6

anydate() функция пакета в любое время была написана для точно этой цели: легкий и надежный парсинг без формата, тогда как все другие пакеты требуют строку формата, или предварительно выбранной функции:

R> library(anytime) 
R> anydate("18-Sep-2016") 
[1] "2016-09-18" 
R> class(anydate("18-Sep-2016")) 
[1] "Date" 
R> 

anydate работает даже при изменении формата:

R> anydate(c("18-Sep-2016", "2016-09-18", "2016/09/18", "20160918", "09/18/2018")) 
[1] "2016-09-18" "2016-09-18" "2016-09-18" "2016-09-18" "2018-09-18" 
R> 

Она также занимается factor типов, но, как акцент делается на POSIXct, что в настоящее время требует, чтобы идти через anydate(anytime(...)) (но будет исправлена, поскольку этот вопрос был отмечен a few days ago)

R> fv <- as.factor(c("18-Sep-2016", "2016-09-18", "2016/09/18", 
+     "20160918", "09/18/2018")) 
R> anydate(anytime(fv)) 
[1] "2016-09-18" "2016-09-18" "2016-09-18" "2016-09-18" "2018-09-18" 
R> 
+0

Могу ли я передать его как фактор значений? Или как я могу обновить data.frame с новыми значениями возврата даты? – jbehrens94

+0

Да, он может - для 'anytime()' и 'utctime()'. Для 'anydate()' и 'utcdate()' У меня есть открытый отчет об ошибке, где он _currently_ не работает. Побочный эффект недавнего изменения кода делает другую часть более надежной. –

+0

Хорошо, поэтому, если я использую 'as.character (df $ Date)' как параметр для 'anydate()', это сработает? – jbehrens94

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