2015-03-23 2 views
1

Как я могу получить правильную дату из первого столбца в моем коде?Как извлечь правильную дату из элемента POSIXct?

test <- data.frame(posixdate = c("2013-05-01 00:59:00", "2013-05-01 01:59:00", "2013-05-01 02:59:00", "2013-05-01 03:59:00")) 
test$posixdate <- as.POSIXct(test$posixdate, format="%Y-%m-%d %H:%M:%S") 
test$date <- as.Date(test$posixdate) 

Приведенные выше результаты кода в:

posixdate   date 
1 2013-05-01 00:59:00 2013-04-30 
2 2013-05-01 01:59:00 2013-04-30 
3 2013-05-01 02:59:00 2013-05-01 
4 2013-05-01 03:59:00 2013-05-01 

Первые две даты не являются правильными. Что я сделал не так? Если as.Date() не является правильной функцией, как я могу получить дату (без часов, минут, секунд) в качестве альтернативы?

Заранее благодарен!

+0

Вы, вероятно, спасительный вопросы дневного света. Вам нужно указать часовой пояс для обоих, например 'test $ posixdate <- as.POSIXct (test $ posixdate, tz =" GMT "); as.Date (test $ posixdate, tz = "GMT") ' –

+0

Спасибо! Я полагаю, что «CET» автоматически не учитывает летние периоды? – Aki

+0

'as.Date' игнорирует его. Просто выполните 'test $ posixdate <- as.POSIXct (test $ posixdate, tz =" CET "); as.Date (тест $ posixdate, tz = "CET") ' –

ответ

0

Попробуйте с lubridate пакета. Меня устраивает.

library(lubridate) 

as.Date(ymd_hms(test$posixdate)) 

[1] "2013-05-01" "2013-05-01" "2013-05-01" "2013-05-01" 
0

проблема часовой пояс,

попробовать свой часовой пояс (вероятно, не GMT)

test$date2 <- as.Date(test$posixdate, "GMT") 

и читать this пост

+1

Спасибо! Хотя я искал аналогичную запись, я ее не нашел. – Aki