1. ホーム
  2. r

[解決済み】長いオブジェクトの長さは、短いオブジェクトの長さの倍数ではない?[重複]。

2022-02-11 02:01:06

質問

なぜ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

これを元のxtsシリーズに適用してみると、次のようになります (ただし、かなり長くなっています)。

head(d)
2009-01-02 116
2009-01-05 256
2009-01-06 286

使用すること。

coredata(d) <- coredat(d) - u[format(index(d),"%w")];

その結果、警告が表示されます。

平日平均を引くという意図です。警告が出ているにもかかわらず、動作しているように見えますが、何を心配すればよいのでしょうか?

解決策を修正しました。試行錯誤2

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

確かに重大なエラーが発生しました。これは警告が出ないので、やってテストしてみました。

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

そして、いくつかの日付を確認すると、カレンダーと整合しているように見えました。

解決方法は?

はい、これは気になるところです。nrow()でオブジェクトの長さを確認してみてください。Rはオブジェクトの長さが異なる場合、同じ長さになるように自動複製することができます。つまり、不一致のデータに対して演算を行っている可能性があるのです。

この場合、生データから集計データを引き算しているという明らかな欠陥があります。これらは間違いなく異なる長さになります。私は、それらを時系列としてマージし(日付を使用)、次にlocf()、そして減算を行うことを提案します。 そうでない場合は、元の日付を切り捨てて、集計された系列と同じ間隔にすることで、それらをマージします。ただ、観測値を落とさないように十分注意してください。

最後に、一般的なアドバイスとして、計算結果が意味をなしているかどうかを見てください。計算結果を表計算ソフトに取り込んで、その結果を再現することもできます。