異なる期間のcsvファイルから同じコマンドで作成された、一見同一の動物園オブジェクトが2つあります。それらを 1 つの長い動物園に結合しようとしましたが、「インデックスが重複しています」というエラーで失敗しています。('merge' 'c' または 'rbind' はすべて、同じエラー テキストのバリエーションを生成します。) 私が見る限り、重複はなく、期間も重複していません。私は何を間違っていますか?それが違いを生む場合、Windows 7 64ビットでRバージョン3.0.1を使用しています。
> colnames(z2)
[1] "Amb" "HWS" "Diff"
> colnames(t.tmp)
[1] "Amb" "HWS" "Diff"
> max(index(z2))
[1] "2012-12-06 02:17:45 GMT"
> min(index(t.tmp))
[1] "2012-12-06 03:43:45 GMT"
> anyDuplicated(c(index(z2),index(t.tmp)))
[1] 0
> c(z2,t.tmp)
Error in rbind.zoo(...) : indexes overlap
>
更新: 再現可能なケースを作成しようとして、これは私が扱っている多数の行による実装エラーであると結論付けました: 最終結果が 311434 行を超える場合は失敗します。
> nrow(c(z2,head(t.tmp,n=101958)))
Error in rbind.zoo(...) : indexes overlap
> nrow(c(z2,head(t.tmp,n=101957)))
[1] 311434
# but row 101958 inserts fine on its own so its not a data problem.
> nrow(c(z2,tail(head(t.tmp,n=101958),n=2)))
[1] 209479
申し訳ありませんが、クリティカルな長さの動物園を作成するための R スクリプトのスキルがありません。うまくいけば、誰かが私を助けてくれるかもしれません..
更新 2-ジェイソンの提案への対応..: 問題は MATCH にありますが、私の R スキルはそれを解釈する方法を知るのに十分ではありません.MATCH は xt で重複する値を見つけますが、anyDuplicated は見つけませんか?
> x.t <- c(index(z2),index(t.tmp));
> length(x.t)
[1] 520713
> ix <- ORDER (x.t)
> length(ix)
[1] 520713
> x.t <- x.t[ix]
> length(ix)
[1] 520713
> length(x.t)
[1] 520713
> tx <- table(MATCH(x.t,x.t))
> max(tx)
[1] 2
> tx[which(tx==2)]
311371 311373 311378 311383 311384 311386 311389 311392 311400 311401
2 2 2 2 2 2 2 2 2 2
> anyDuplicated(x.t)
[1] 0