【发布时间】:2013-10-15 20:49:43
【问题描述】:
考虑以下动物园对象:
x <- data.frame(Date = seq(as.Date("2013-02-01"), length=6, by="1 month") - 1, x = seq(6))
y <- data.frame(Date = seq(as.Date("2013-02-01"), length=4, by="1 month"), y = seq(4))
z <- data.frame(Date = seq(as.Date("2012-11-01"), length=9, by="1 month"), z = seq(9))
x.zoo = zoo(x[,-1], order.by = x[,1])
y.zoo = zoo(y[,-1], order.by = y[,1])
z.zoo = zoo(z[,-1], order.by = z[,1])
请注意,这 3 个动物园对象的长度不同。 我想根据变量 "x" 的日期对齐所有对象:换句话说,我想创建一个包含日期列(对象 x 的索引)的新数据框,并且用最接近的可用观察值填充每个变量。
这是我正在寻找的结果:
Date x y z
1 2013-01-31 1 1 4
2 2013-02-28 2 2 5
3 2013-03-31 3 3 6
4 2013-04-30 4 4 NA
5 2013-05-31 5 NA NA
6 2013-06-30 6 NA NA
请注意,实际上,我有 10 个变量要与 x 对齐。
我知道zoo 包中的na.locf 函数,但我不确定如何在多个动物园对象的上下文中调整它。
有没有我可以有效地做到这一点?
谢谢!
【问题讨论】:
-
在这种情况下,您如何定义“最接近”?
lubridate::round_date可能会有所帮助 -
那些还不是动物园对象。
-
对不起,我跳过了一些代码行。。刚刚修复它。
-
您可以使用
read.zoo(x)代替zoo(x[,-1], order.by = x[,1])。 “结果数据的 index.column 列(默认为第一列)被解释为索引/时间,其余列为对应数据。” -
我想知道您的预期结果:为什么
z中的最后三个日期不匹配?