2012-01-05 84 views
1

在致電merge.xts後,我的結果時間序列對象有3列,分別命名爲A.1,B.1,C.1。原始的xts對象都設置了A,B,C列。我假設合併是按照文檔在所有常見列上執行的。R:merge.xts公共列

我檢查了列內容A,B,C和A.1,B.1,C.1。對my.merged[my.merged$A.1 != my.merged$A, ]的調用將不會爲所有這些列返回行。

爲什麼常見的列不會在一組中崩潰?

回答

4

?merge.xts非常明確地說它是「用於對'xts'對象執行合併操作的時間(索引)」。它並沒有說合並是在公共列上完成的。您可能在?merge中參考data.frame方法來閱讀。

+0

謝謝。有沒有辦法避免merge.xts()中的雙列,而不是在合併之後手動刪除它們? – 2012-01-05 21:13:31

+2

@RobertKubrick:在合併之前移除它們或在合併之後移除它們。它會增加'merge.xts'的複雜性,以檢查兩個或更多對象中的列是否相等(例如,如果數據相同但列名不同?比較浮點的容差是多少數字?如果兩個對象中的列中的數據是相同的,但是第三個對象中的名稱相似的列是不同的?等等)。 – 2012-01-05 21:16:54

2

我想你可能想要的是rbind,而不是merge。我通過示例數據在http://darrendev.blogspot.jp/2012/08/small-rxts-code-snippets-and-tips.html(見條目6a和6b)上發表了博客。

如果你在合併的兩個xts對象中都有相同的時間戳,那麼你將得到重複的行。因此,爲了得到您想要的結果,您可以刪除重複項作爲後處理步驟。