我有一个名为'开始'的初始起始值的单个列矩阵(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。
我的目标是将其与一个单独的表格()结合起来,该表格包含减少的数量,这些数量来自于&#39;每月减少。
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,"-")
然而,显然扫描对于相关矩阵性质的表不起作用,如上所述。
非常感谢您的任何帮助。
答案 0 :(得分:4)
不确定这是否理想,但这是一次尝试:
starts[,rep(1,5)] - cbind(0, t(apply(mytable, 1, cumsum)) )
# [,1] [,2] [,3] [,4] [,5]
#January 100 80 70 65 60
#February 100 100 90 80 70
#March 100 100 100 95 90
#April 100 100 100 100 90
#May 100 100 100 100 100