私はこの問題が発生するにはあまりにも長い間Rユーザーでしたが、私はあなたの助けが必要です(恥ずかしく思います)。シンプルな「マージ」の寸法が間違っているR
私は2つのデータセットを持っている:
まったく同じ文字列で満たされている共通の列、共有> dim(markus301_rms.df)
[1] 743 15
> dim(markus301_envel.df)
[1] 743 15
:
> class(markus301_envel.df$soundname)
[1] "character"
> class(markus301_rms.df$soundname)
[1] "character"
> setdiff(markus301_rms.df$soundname,markus301_envel.df$soundname)
character(0)
ため、マージに適しているであろうが743x29のデータフレームに2セット。
さて、これは何が起こるかさ:予想通り
dim(merge(markus301_rms.df,markus301_envel.df,by="soundname"))
[1] 1485 29
列の数ですが、行数はほぼ倍です。 merge
は、2つのセット内の1つの重複エントリだけを識別できましたが、setdiff
はすべてを重複として識別しました。奇妙なことに
、dplyr
は同じに動作します。
> require(dplyr)
> markus301_rms.df %>% full_join(markus301_envel.df,by="soundname") %>% dim()
[1] 1485 29
> markus301_rms.df %>% left_join(markus301_envel.df,by="soundname") %>% dim()
[1] 1485 29
> markus301_rms.df %>% right_join(markus301_envel.df,by="soundname") %>% dim()
[1] 1485 29
私は前にこのような状況ではなかったです。
インデクシング列には何が問題なのですか?
EDIT:私のマシンに関する情報:
> Sys.info()
sysname
"Darwin"
release
"15.5.0"
version
"Darwin Kernel Version 15.5.0: Tue Apr 19 18:36:36 PDT 2016; root:xnu-3248.50.21~8/RELEASE_X86_64"
nodename
"Fredrik-Karlssons-Macbook-Air.local"
machine
"x86_64"
この現象を示す小さなデータセットをシミュレートできますか?クラスは同じかもしれませんが、文字列の表現はそうではないかもしれません(これはあなたの例からは明らかではありません)。 –
両方のインデックス列に値が重複していませんか?私。 'sum(重複した(markus301_envel.df $ soundname))'は0に等しいか? – jkt
'table(duplicated(markus301_envel.df $ soundname))'と 'table(duplicated(markus301_rms.df $ soundname))'とは何ですか? –