按最新数据重新排序时间序列

时间:2015-01-12 18:23:23

标签: r time-series

我有一个时间序列

z <- structure(c(400L, 0L, 0L, 125L, 120L, 200L, 0L, 0L, 100L, 
0L), .Dim = c(5L, 2L), .Dimnames = list(NULL, c("Quant1", "Quant2"
)), index = structure(c(15728, 15727, 15726, 15725, 15723), class = "Date"), 
class = "zoo")

coredata(z)[coredata(z) == 0] <- NA    

所以z变为

           Quant1 Quant2
2013-01-23    400    200
2013-01-22     NA     NA
2013-01-21     NA     NA
2013-01-20    125    100
2013-01-18    120     NA

现在我尝试使用locf作为

z <- na.locf(z, fromLast = T)

           Quant1 Quant2
2013-01-18    120     NA
2013-01-20    125    100
2013-01-21    125    100
2013-01-22    125    100
2013-01-23    400    200

输出正确但反转了日期顺序。

我想使用

计算此数据的回报
rollapply(z,width=2,FUN=function(xx)if(is.finite(xx[2]/xx[1])) xx[2]/xx[1] else 0)-1

我得到的输出

               Quant1 Quant2
2013-01-18 0.04166667     -1
2013-01-20 0.00000000      0
2013-01-21 0.00000000      0
2013-01-22 2.20000000      1

我想要的输出

               Quant1 Quant2
2013-01-23 2.20000000      1
2013-01-22 0.00000000      0    
2013-01-21 0.00000000      0
2013-01-20 0.04166667     -1

有什么建议吗?

更新
如果我在使用na.locf之后可以颠倒系列的顺序,那将会很棒。这将解决我的目的,但无法做到。我是R的新手。

0 个答案:

没有答案
相关问题