R 按顶部最新数据重新排序时间序列

R 按顶部最新数据重新排序时间序列,r,time-series,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)[c

我有一个时间序列

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    
现在我试着用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
我得到的输出

               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。

这似乎是一个重复,虽然不确定是否有更好的解决方法,但我们可以修改“rollapply(z,width=2,FUN=function(xx)if(is.finite(xx[2]/xx[1]))xx[2]/xx[1]else 0)-1”以获得所需的结果,因为转换可能是性能问题,但我不知道,我对
zoo
不够熟悉。在这里,JU或GG可能比我更有帮助。
rev(z)
是你的朋友
               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