2015-05-28 3 views
1

У меня есть объект data.table со столбцами дата и время, хранящиеся как объекты IDate/ITime. У меня также есть столбец часового пояса, где часовой пояс задается как символ.Добавление часового пояса к объекту POSIXct в data.table

Теперь я хочу создать столбец DateTime, который использует формат POSIXct. Однако я не могу понять, как добавить правильный часовой пояс к объекту.

#Create the data.table object 
dtData <- data.table(
Index = seq(1,5), 
Time= as.ITime(c('16:00', '16:00', '12:30', '16:00', '15:00')), 
Date = as.IDate(rep('2015-05-28', 5)), 
TimeZone=c('America/New_York', 'America/New_York', 'Europe/London', 'Asia/Hong_Kong', 'Japan')) 

#This gives an error of invalid tz value 
dtData[, psxDateTime:=as.POSIXct(Date, time = Time, tz = TimeZone)] 

#This seem to set every row to Japan time zone 
dtData[, psxDateTime:=as.POSIXct(Date, time = Time, tz = TimeZone), by=Index] 
print(dtData$psxDateTime) 

Может кто-нибудь сможет указать мне правильное направление? Спасибо.

EDIT:

После прочтения комментариев Дэвида Arenburg и akrun, похоже, что нет никакого способа, чтобы хранить POSIXct объектов с разными часовыми поясами в одном data.table колонка. Даже комбинируя вектор изменения атрибута часового пояса:

Date1 <- as.POSIXct('2015-05-28 16:00', tz='America/New_York') 
Date2 <- as.POSIXct('2015-05-28 12:00', tz='Japan') 
Date3 <- c(Date1, Date2) 
print(Date1) 
print(Date2) 
print(Date3) 
+1

Что такое «время = время»? Не могу вспомнить параметр 'time' в' as.POSIXct'. Я также сомневаюсь, что один вектор POSIXct может содержать разные часовые пояса одновременно. –

+0

Это происходит из класса data.table IDateTime. См. Http://www.inside-r.org/packages/cran/data.table/docs/as.IDate Однако dtData [, psxDateTime: = as.POSIXct (вставка (дата, время), tz = cTimeZone), by = Index] тоже не работает. –

+3

Он должен работать, но, как я уже говорил, я сомневаюсь, что вы можете иметь несколько часовых поясов в одном ветере. –

ответ

0

Я закрываю этот вопрос, как это кажется, что это не возможно, чтобы иметь POSIXct объектов с разными часовыми поясами в одном столбце data.table.

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