R 较长的对象长度不是较短对象长度的倍数?

R 较长的对象长度不是较短对象长度的倍数?,r,xts,R,Xts,我不明白为什么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 使用: coredata(d) <- coredat(d) - u[format(index(d),"

我不明白为什么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
使用:

coredata(d) <- coredat(d) - u[format(index(d),"%w")];
我确实犯了一个严重的错误。这不会给出任何警告,我通过以下方式进行了测试:

apply.daily(d, function(x) u[format(index(x), "%w")] )

然后检查一些日期,似乎与日历一致。

是的,这是您应该担心的问题。使用nrow()检查对象的长度。R可以自动复制对象,使它们在不同时具有相同的长度,这意味着您可能正在对不匹配的数据执行操作

在这种情况下,您有一个明显的缺陷,即从原始数据中减去聚合数据。这些肯定会有不同的长度。我建议您将它们合并为时间序列(使用日期),然后使用locf(),然后进行减法运算。否则,通过将原始日期截断到与聚合序列相同的时间间隔来合并它们。只是要非常小心,不要掉下观察结果


最后,作为开始时的一些一般建议:查看计算结果,看看它们是否有意义。您甚至可以将它们拉入电子表格并复制结果

可能更适合stackoverflow。是的,我有点不确定。从一个角度来看,R是一个可以编写脚本的统计工具,但它也是一种编程语言。这个问题至少涉及到一个数据问题,但这将是一个持续的混乱原因,可能没有正确的答案。请随时将我弹跳到stackoverflow:-)这是可以自动完成的吗?不,我们就把它留在这里(IMO)。谢谢。我不确定我是否完全明白你的意思。u应该更短,因为它是工作日,因为这是呼叫中心,我周一的电话比周五多。在一些事件中,比如一封信被寄出,我有一个效果,我认为可能是加性的(即1%的收到信的人打电话)。因此,如果在周一1收到字母A,我收到的电话总数与在周五收到的电话总数不同。你如何从长度为15的向量中减去长度为10的向量(例如)?R将简单地重复较短向量的前5个元素,这不是您想要的。因此,你需要合并它们,并将聚合值向前推进。谢谢你,我认为我缺少一些基本的见解。对我来说,我上面修改过的解决方案看起来与我最初的解决方案几乎相同,但A-B测试显示日历未对齐,这与您让我意识到的一致。
apply.daily(d, function(x) coredata(x) - u[format(index(x), "%w")] )
apply.daily(d, function(x) u[format(index(x), "%w")] )