首页 文章

在data.table中为POSIXct对象添加时区

提问于
浏览
2

我有一个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)

有人能指出我正确的方向吗?谢谢 .

编辑:

阅读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)

1 回答

  • 0

    我正在关闭这个问题,因为似乎不可能在data.table的一列中使用具有不同时区的POSIXct对象 .

相关问题