我有一个时间序列
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的新手。