【发布时间】:2011-10-06 17:20:24
【问题描述】:
我有 3 个 xts 对象,所有这些对象的索引都是“日期”对象:
> a
a
1995-01-03 1.76
1995-01-04 1.69
> b
b
1995-01-03 1.67
1995-01-04 1.63
> c
c
1995-01-03 1.795
1995-01-04 1.690
验证索引是否相同:
> index(a) == index(b)
[1] TRUE TRUE
> index(a) == index(c)
[1] TRUE TRUE
现在我看到了这种奇怪的行为:
> merge.xts(a,b)
a b
1995-01-03 NA 1.67
1995-01-03 1.76 NA
1995-01-04 NA 1.63
1995-01-04 1.69 NA
虽然以下合并工作正常:
> merge.xts(a,c)
a c
1995-01-03 1.76 1.795
1995-01-04 1.69 1.690
我不知道这里可能发生了什么。有什么想法吗?
更新:
> dput(a)
structure(c(1.76, 1.69), .indexCLASS = "Date", .indexTZ = "", .CLASS = "xts", class = c("xts",
"zoo"), index = structure(c(789168240, 789254580), tzone = "", tclass = "Date"), .Dim = c(2L,
1L), .Dimnames = list(NULL, "a"))
> dput(b)
structure(c(1.67, 1.63), .indexCLASS = "Date", .indexTZ = "", .CLASS = "xts", class = c("xts",
"zoo"), index = c(789109200, 789195600), .Dim = c(2L, 1L), .Dimnames = list(
NULL, "b"))
> dput(c)
structure(c(1.795, 1.69), .indexCLASS = "Date", .indexTZ = "", .CLASS = "xts", class = c("xts",
"zoo"), index = c(789109200, 789195600), .Dim = c(2L, 1L), .Dimnames = list(
NULL, "c"))
确实,问题在于索引不相同(由 .index(a) == .index(b) 验证)。转换为数字然后重新创建 xts 并使用 asDate 重新计算日期解决了问题。
这些对象是从 xts 的 to.daily 方法创建的。
【问题讨论】:
-
请将打印
a、b、c的结果替换为dput(a)、dput(b)、dput(c)的结果。 -
我会调查 to.period。谢谢你的背景。