我有一个名为“starts”的初始起始值的单列矩阵(rbind 操作的结果),用于几个从不同月份开始的时间序列,如下所示:
starts <- matrix(rep(100,5),ncol=1)
rownames(starts) <- month.name[1:5]
starts
[,1]
January 100
February 100
March 100
April 100
May 100
显然,实际上起始数字并不总是 100。
我的目标是将其与一个单独的 table() 结合起来,其中包含“开始”每月减少的递减量。
mytable <- structure(c(20L, 0L, 0L, 0L, 0L, 10L, 10L, 0L, 0L, 0L, 5L, 10L,
5L, 0L, 0L, 5L, 10L, 5L, 10L, 0L), .Dim = c(5L, 4L), .Dimnames = list(
c("1", "2", "3", "4", "5"), c("1", "2", "3", "4")), class = "table")
mytable
1 2 3 4
1 20 10 5 5
2 0 10 10 10
3 0 0 5 5
4 0 0 0 10
5 0 0 0 0
这里的周期:1、2、3、4 是指月份之间的周期,因此周期 1 显示时间序列值在 1 月和 2 月之间减少了多少。垂直数字 1、2、3、4、5 对应于时间序列。
输出应该是一个如下所示的新表:
January February March April May
January 100 80 70 65 60
February 100 90 80 70
March 100 95 90
April 100 90
May 100
我想我也许可以用扫描方式的函数来做到这一点,例如:
result <- sweep(starts,2,mytable,"-")
然而,显然扫描不适用于相关矩阵性质的表格,例如上述。
非常感谢您的帮助。