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