我不明白为什么R给我一个关于"较长的物体长度不是较短物体长度的倍数"的警告
我有这个对象,它通过在xts系列上进行聚合生成,给出工作日中位数:
u <- aggregate(d, list(Ukedag = format(index(d),"%w")), median)
1 314.0
2 282.5
3 270.0
4 267.0
5 240.5
Run Code Online (Sandbox Code Playgroud)
然后我尝试将它应用到我的原始xts系列,看起来像这样(只是更长)
head(d)
2009-01-02 116
2009-01-05 256
2009-01-06 286
Run Code Online (Sandbox Code Playgroud)
使用:
coredata(d) <- coredat(d) - u[format(index(d),"%w")];
Run Code Online (Sandbox Code Playgroud)
这会导致警告.
目的是减去工作日的平均值.尽管有警告,它似乎仍然有效,但我应该担心什么?
apply.daily(d, function(x) coredata(x) - u[format(index(x), "%w")] )
Run Code Online (Sandbox Code Playgroud)
我确实有一个严重的错误.这没有给出任何警告,我通过这样做测试:
apply.daily(d, function(x) u[format(index(x), "%w")] )
Run Code Online (Sandbox Code Playgroud)
然后检查一些日期,它似乎与日历一致.
Sha*_*ane 13
是的,这是你应该担心的事情.使用nrow()检查对象的长度.R可以自动复制对象,如果它们不同则它们的长度相同,这意味着您可能正在对不匹配的数据执行操作.
在这种情况下,您有一个明显的缺陷,即您从原始数据中减去聚合数据.这些肯定会有不同的长度.我建议你将它们合并为时间序列(使用日期),然后是locf(),然后进行减法.否则,通过将原始日期截断为与聚合系列相同的间隔来合并它们.只是要非常小心,不要放弃观察.
最后,正如您开始时的一些一般建议:查看计算结果,看看它们是否有意义.您甚至可以将它们拉入电子表格并复制结果.