20

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")] )

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

4

1 に答える 1

18

はい、これはあなたが心配すべきことです。nrow()を使用してオブジェクトの長さを確認します。Rは、オブジェクトが異なる場合でも同じ長さになるようにオブジェクトを自動複製できます。つまり、不一致のデータに対して操作を実行している可能性があります。

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

最後に、開始時の一般的なアドバイスとして、計算結果を見て、意味があるかどうかを確認します。それらをスプレッドシートにプルして、結果を複製することもできます。

于 2010-08-03T09:24:24.087 に答える