我有两个绝对的动物园时间序列(一个人的日期在另一个完成后开始),他们有以下形式(但更长时间而且不仅仅是NA值):
一个:
1979-01-01 1979-01-02 1979-01-03 1979-01-04 1979-01-05 1979-01-06 1979-01-07 1979-01-08 1979-01-09
NA NA NA NA NA NA NA NA NA
B:
1988-08-15 1988-08-16 1988-08-17 1988-08-18 1988-08-19 1988-08-20 1988-08-21 1988-08-22 1988-08-23 1988-08-24 1988-08-25
NA NA NA NA NA NA NA NA NA NA NA
我想要做的就是将它们作为ZOO对象一次性组合,这似乎是一项基本任务,但我做错了。我使用函数“merge”:
combined <- merge(a, b)
但结果是形式:
a b
1980-03-10 NA NA
1980-03-11 NA NA
1980-03-12 NA NA
1980-03-13 NA NA
1980-03-14 NA NA
1980-03-15 NA NA
1980-03-16 NA NA
.
.
这不是时间序列,长度不合适:
> length(a)
[1] 10957
> length(b)
[1] 2557
> length(combined)
[1] 27028
我怎样才能将它们组合成一个原始形式的时间序列?
答案 0 :(得分:0)
假设最后在Note中可重复显示的系列,合并两个系列的结果有20次和2列(每个系列一个)。单个系列的长度为9和11个元素,合并的系列是动物园对象,9 + 11 = 20行(因为没有交叉时间)和2列(每个输入一个)和长度40(= 20 * 2) 。请注意,多变量系列的长度是其中的元素数,而不是时间点的数量。
length(z1)
## [1] 9
length(z2)
## [1] 11
m <- merge(z1, z2)
class(m)
## [1] "zoo"
dim(m)
## [1] 20 2
nrow(m)
## [1] 20
length(index(m))
## [1] 20
length(m)
## [1] 40
如果你想要的是将它们一个接一个地串起来,那么使用c
:
length(c(z1, z2))
## [1] 20
以上内容与merge
,c
和length
在基地R中的工作方式一致。
注意:强>
library(zoo)
z1 <- zoo(rep(NA, 9), as.Date(c("1979-01-01", "1979-01-02", "1979-01-03",
"1979-01-04", "1979-01-05", "1979-01-06", "1979-01-07", "1979-01-08",
"1979-01-09")))
z2 <- zoo(rep(NA, 11), as.Date(c("1988-08-15", "1988-08-16", "1988-08-17",
"1988-08-18", "1988-08-19", "1988-08-20", "1988-08-21", "1988-08-22",
"1988-08-23", "1988-08-24", "1988-08-25")))