日記Rでデータハンドリングする時,便利なmerge関数。簡単に言うと,二種類のデータがあったら,キー変数を使って名寄せしてくれるわけです。事前調査,事後調査をして別のファイルに保存していたけど,分析は前後で対応をつけてやりたい。学籍番号か何かでラベルはつけてあるけど,ソートしてマッチングして・・・というのは手作業では大変ですな。それを自動でやってくれるんです,こんなにありがたいことはない。いうことで,まさに上のような状態で分析を今から始めようとしていて,データセットA,データセットBそれぞれに200人近いデータが入っていたのです。merge(dataA,dataB,by=”キー変数”)とするだけでよかった・・・はず。出来上がったデータセットはなぜか500人近いデータになっていてびっくりw完全にバラバラなデータであっても,400人にしかならないはずなのに,どこからか100人分わいて出てきている。これはどういうことだろう・・・と,この三日ほどなやんでおりました。先ほど色々考えてやっと解決。要は,キー変数に欠損値が複数ある場合,が問題だった。NA,とあって,データセットBに同じく1,3,5,NA,NA,NAとあったとします。この場合,両者にある1,3のデータはマージしてほしいんだけど,5は違うので,残すか消すかですね。5を保存するかどうかはオプションで指定します。保存してほしかったら,all=Tというオプションを着けます。問題は,NAなのです。欠損値なので,このレコードは合わせようがない。分析には一部使えるので,マージするだけするか,というところですが,複数のNAがどことマッチするか分からない!そこでRは,その分を水増しするわけです。仮にデータセットAのNAを順にNA_a1,NA_a2,データセットBのNAを順にNA_b1,NA_b2,NA_b3とすると,どうやらRは,NA_a1=NA_b1NA_a1=NA_b2NA_a1=NA_b3NA_a2=NA_b1NA_a2=NA_b2NA_a2=NA_b3と「水増し」してしまうようです。なんだこりゃ,と思われるかもしれないけど,Rの立場から考えると(!)これは合理的な配慮ではあるかな,と。それが嫌なら,事前にキー変数の欠損値に別の数字を割り付けておくかなんかして,確実にずれるようにすれば問題回避できます。これで謎が明らかになったぞ。追記)@R_Linux先生から素敵なお知らせ。merge関数のincomparables引数にNAを指定すればこの問題を回避できます。使い方はmerge(dataA,dataB,by=”キー変数”,incomparables=NA)とするだけです。こんなに簡単な回避方法があったとは。自分は別でかぶらないように着けたID変数をキー変数のNAに代入して回避してましたよ。自らの無能さを晒すために,消さずにおいておきます。続きRedditPocketPinterest類似のニュース日記もう騙せない蕁麻疹が完治、根治、しないんですよねぇ。誕生日メモ娘が「牛乳買って。飲まないんだけど」という。今年の10大ニュース2019今年も大晦日になりました。今年もいろんな人に遊んでもらって、感謝しています。キャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。