从Matrix创建时间序列

时间:2016-02-08 10:10:21

标签: r matrix time-series

我想从矩阵创建时间序列,如果系统在(1)或关闭(0),我将获得信息。因此在m1中我有5433小时值20,然后从5433到5574,值为0,依此类推。在第二个矩阵中,值为40.现在我想用两个矩阵之和建立一个时间序列,得到8760个值。

m1 <- matrix(c(5433, 1, 5574, 0,8164,1,8242,0,8760,1), nrow = 5, ncol = 2,   byrow = TRUE)
m2<-matrix(c(1428, 1,7642,0,8760,1), nrow = 3, ncol = 2, byrow = TRUE)


> m1
      [,1] [,2]
 [1,] 5433    1
 [2,] 5574    0
 [3,] 8164    1
 [4,] 8242    0
 [5,] 8760    1
> m2
      [,1] [,2]
[1,] 1428    1
[2,] 7642    0
[3,] 8760    1

我可以使用m1的rep函数

a<-rep(c(20,0,20,0,20),c(5433,5574-5433,8164-5574,8242-8164,8760-8242))

head(a)
20 20 20 20 20 20

1 个答案:

答案 0 :(得分:1)

您可以将二进制列中的1分别转换为2040,添加一个在rep中定义times的列,生成向量然后添加它们:

# transform binary values
m1[m1 == 1] <- 20
m2[m2 == 1] <- 40

# add column for rep()
m1 <- cbind(m1, c(m1[1,1], diff(m1[,1])))
m2 <- cbind(m2, c(m2[1,1], diff(m2[,1])))

# generate timeseries
a <- rep(m1[,2], m1[,3])
b <- rep(m2[,2], m2[,3])

# add them up
a + b