2016-07-06 1 views
0

Я пытаюсь преобразовать фрейм данных с датами в человекообразном формате «MM/dd/yy» в эпохальные дни.Необходимо преобразовать дату в формате «MM/dd/yy» в epoch в R

Вот пример фрейма данных:

human.date 
    1 7/25/11 
    2 7/25/11 
    3 7/25/11 
    4 7/25/11   
    5 7/25/11 
    6 7/25/11 

Я хочу, чтобы использовать эту функцию, чтобы преобразовать каждую дату в кадре данных в эпоху дней:

# Convert from human readable date to days since epoch and round to nearest day 
round(as.numeric(as.POSIXct("yyyy/MM/dd HH:mm:ss", origin="1970-01-01"))/86400) 

Однако функция выше работает только в том случае, если читаемая человеком дата находится в формате «yyyy/MM/dd».

round(as.numeric(as.POSIXlt("2000/02/20", origin="1970-01-01"))/86400) 
[1] 11007 

Есть ли более простой способ сделать это преобразование или другой функции я могу использовать, что будет принимать даты в формате «мм/дд/гг»?

+0

Каковы эпоха дней? – thepule

ответ

2

Вы должны использовать format аргумент функции as.POSIXlt:

> human.date <- "7/25/11" 
> round(as.numeric(as.POSIXlt(human.date, format = "%M/%d/%y", origin = "1970-01-01"))/86400) 
[1] 15180 
+0

Спасибо. Знаете ли вы, как я буду также перебирать весь кадр данных с более чем 600 датами и применять эту функцию? –

+0

Посмотрите на пакет 'dplyr' и, в частности, функцию' mutate' – hugovdberg

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