我有一个 data.table 对象,其中日期和时间列存储为 IDate/ITime 对象。我还有一个时区列,其中时区以字符形式给出。
现在我想创建一个使用 POSIXct 格式的 DateTime 列。但是我不知道如何向对象添加正确的时区。
#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:
阅读 David Arenburg 和 akrun 的评论后,似乎无法在一个 data.table 列中存储具有不同时区的 POSIXct 对象。即使组合向量也会改变时区属性:
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)