2012-01-05 14 views
1

merge.xtsを呼び出した後、結果として得られた時系列オブジェクトには、A.1、B.1、C.1という3つの列があります。オリジナルのxtsオブジェクトには、両方ともA、B、Cの列が設定されています。私はマージがドキュメントごとにすべての共通の列で実行されたと仮定しています。R:merge.xts common columns

カラム内容A、B、CおよびA.1、B.1、C.1を確認しました。 my.merged[my.merged$A.1 != my.merged$A, ]を呼び出すと、これらの列すべてに対して行が返されません。

共通の列が1つのセットで折りたたまれなかったのはなぜですか?

答えて

4

?merge.xts「xts」オブジェクトのマージ操作を時間(インデックス)で実行するために使用されています。マージは共通の列で行われているとは言いません。おそらく、?mergeのdata.frameメソッドを参照してください。

+0

ありがとうございました。マージ後に手動で削除する以外に、merge.xts()の二重列を避ける方法はありますか? –

+2

@RobertKubrick:マージの前にそれらを削除するか、マージ後に削除します。 merge.xtsには、マージされる2つ以上のオブジェクトのカラムが等しいかどうかをチェックするために多くの複雑さが加わります(例えば、データが同じだがカラム名が異なる場合はどうなりますか?浮動小数点2つのオブジェクトの列のデータが同じであるが、第3のオブジェクトの同様の名前の列が異なる場合など)。 –

2

rbindではなく、mergeでした。私はhttp://darrendev.blogspot.jp/2012/08/small-rxts-code-snippets-and-tips.html(サンプル6aと6bを参照)にサンプルデータとともにこのことについてブログしました。

マージしている両方のxtsオブジェクトに同じタイムスタンプがある場合は、重複する行が表示されます。したがって、希望する結果を得るには、重複を後処理ステップとして削除します。