2016-03-07 6 views
0

Я запутался в as.POSIXct в R.R as.POSIXct часового пояса вопрос

Я использую следующий код для преобразования значений в столбцах один столбец с указанием даты и времени.

fname$DateTime <- as.POSIXct(paste(fname$yy, fname$mm, fname$dd, fname$HH, fname$MM), format = "%y %m %d %H %M") 

Затем я установил лимит времени для построения графика.

lims <- as.POSIXct(strptime(c("2015-10-23 4:00","2015-10-23 16:00"), format = "%Y-%m-%d %H:%M")) 
    Temp <- ggplot(DF, aes(x=DateTime, y=Temp)) + geom_line(aes(x=DateTime, y=Temp),colour="blue", alpha = 0.8) + scale_x_datetime(limits =lims, breaks=date_breaks("1 hour"), labels=date_format("%m/%d %H:%M")) + facet_wrap(~ ID, ncol=4) 
    Temp + geom_vline(xintercept=as.numeric(as.POSIXct("2015-10-23 10:30")), linetype=4, colour="purple") 

enter image description here

Временной ряд начинается с 10/23 08:00 вместо 10/23 4:00; заканчивается 10/23 20:00 вместо 10/23 16:00. Вертикальная линия показывает 10/23 14:30 вместо 10/23 10:30. Это 4-часовая смена времени!

Что случилось? Как я могу показать правильный временной ряд, как DateTime, показанный в кадре данных? Пожалуйста, помогите мне!

Спасибо.

+0

Возможно, проблема с часовым поясом – MLavoie

+0

Измерения проводились по местному времени. POSIXct не использовал часовой пояс. Почему бы не просто показать, что такое DateTime, как в фрейме данных? –

ответ

3

Если вы используете as.POSIXct без указания часового пояса, предполагается, что введенные вами значения являются utc, а также предполагается, что вы хотите, чтобы они были преобразованы в локальный часовой пояс. Почему это делает эти часто ложные предположения, вне меня ...
Попробуйте as.POSIXct(..., tz=<enter your timezone>)

Если вы не знаете, часовой пояс, Sys.timezone(location = TRUE) покажет вам, что ваш часовой пояс.

+0

Отлично! Он совпадает с часовым поясом GMT. ОДНАКО, geom_vline (xintercept = as.numeric (as.POSIXct («2015-10-23 10:30»)) не показывал, где это должно быть. Он построен в 2015-10-23 14:30. в 2015-10-23 10:30. Любые идеи? –

+0

@ kuo-hsienchang та же проблема. Добавьте часовой пояс к функции 'as.POSIXct'. – RHA

+0

Я добавил« tz = «UTC» к обоим из них. работа, как я и ожидал. –

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