2016-03-02 53 views
1

我有一个单变量时间系列对象,为了使用聚合函数()函数,我将其转换为xts对象。这是它的样子:R:在聚合后更改xts对象的时区

> head(B, 20) 
        [,1] 
2015-09-16 09:16:00 1 
2015-09-16 09:16:26 1 
2015-09-16 09:16:46 1 
2015-09-16 09:17:28 -1 
2015-09-16 09:19:17 1 
2015-09-16 09:22:06 -1 

时区是“IST”(印度标准时间),因为它正确显示在上面。当我在其上运行聚合函数时,它将时区更改为“GMT”。我需要它留在“IST”中,因为我需要比较“IST”时区中的其他变量。它还显示一条警告消息:我也尝试通过indexTZ()函数手动更改时区,但这也没有帮助。

> indexTZ(C)<- "IST" 
> head(C) 
        ts3 
2015-09-16 03:47:00 3 
2015-09-16 03:48:00 -1 
2015-09-16 03:49:00 NA 
2015-09-16 03:50:00 1 
2015-09-16 03:51:00 NA 
2015-09-16 03:52:00 NA 
Warning message: 
timezone of object (IST) is different than current timezone(). 

我也尝试改变聚合函数本身的时区选择来做一个新的函数,但它仍然吐出相同的东西。

这真的很奇怪,因为我在其他一些变量中使用了同样的方法,我试图分析它,但它不会给我同样的问题。

如果我错过了某些东西,或者我该如何解决我的问题并将系列保存在“IST”中,是否有人可以提供一些信息? 任何帮助将不胜感激,请让我知道如果你需要任何更多的信息。

编辑:添加的要求

whole_data<- read.csv(file = file,header = FALSE,sep = "", col.names = c("DateTime","Seq","BP1","BQ1","BO1","AP1","AQ1","AO1","BP2","BQ2","BO2","AP2","AQ2","AO2","BP3","BQ3","BO3","AP3","AQ3","AO3","BP4","BQ4","BO4","AP4","AQ4","AO4","BP5","BQ5","BO5","AP5","AQ5","AO5","BP6","BQ6","BO6","AP6","AQ6","AO6","BP7","BQ7","BO7","AP7","AQ7","AO7","BP8","BQ8","BO8","AP8","AQ8","AO8","BP9","BQ9","BO9","AP9","AQ9","AO9","BP10","BQ10","BO10","AP10","AQ10","AO10"), colClasses = c(NA, rep("integer",31), rep("NULL", 30))) 
    whole_data<- whole_data[which(whole_data$DateTime != 0),] 
    whole_data$DateTime= as.POSIXct(whole_data$DateTime/(10^9), origin="1970-01-01") 

trades<- whole_data[!complete.cases(whole_data),] 
      colnames(trades) <- c("DateTime", "Seq", "Price", "Qty", "TradeSide") 
      trades[,5][trades[,5]==2]<- -1 
      B<- as.xts(trades$TradeSide, order.by = trades$DateTime) 
      C<- aggregatets(B, FUN = "sum", on = on, k = k) 

整个数据集大。对于这个特定的变量,我只需要交易行,这样我就可以进行交易了!完整案例

我仍然无法解决这个问题。你可以向我们透露一些情况吗?

回答

0

你是怎么定义B的?它是什么data.frame?那里的1和-1值是多少?它看起来像在同一列。它可能是时区信息?

看看How to get the beginning of the day in POSIXct这里也有一些时区效果,这对我来说是一个惊喜。

编辑20160309: 我认为使用没有时区的原点会导致它使用GMT。但是我没有时间去尝试。
也许你可以试试下面的代码

whole_data$DateTime= as.POSIXct(whole_data$DateTime/(10^9), origin="1970-01-01", tz="IST") 
+0

它绝对不会在同一列,它不是时区信息。 B是我从data.frame转换为xts对象的买卖订单的时间序列。 – UtdMan

+0

你可以给你用来生成B和底层数据框的代码吗?当我尝试将data.frame与您的数据转换为xts时,出现as.POSIXlt.character转换错误。 –

+0

您要求的发布代码。对不起,延迟回复。 – UtdMan

0

尝试使用attr(index(C), "tzone") = "IST"

+1

这更适合作为评论。 – Andy

+0

这简单地解决了问题... –