在data.table

时间:2015-05-28 12:23:51

标签: r data.table posixct

我有一个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 :(得分:0)

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