У меня есть объект 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)
Что такое «время = время»? Не могу вспомнить параметр 'time' в' as.POSIXct'. Я также сомневаюсь, что один вектор POSIXct может содержать разные часовые пояса одновременно. –
Это происходит из класса data.table IDateTime. См. Http://www.inside-r.org/packages/cran/data.table/docs/as.IDate Однако dtData [, psxDateTime: = as.POSIXct (вставка (дата, время), tz = cTimeZone), by = Index] тоже не работает. –
Он должен работать, но, как я уже говорил, я сомневаюсь, что вы можете иметь несколько часовых поясов в одном ветере. –