9

Rユーザーとして、私は現在このリソースを使用してStataを学んでおり、コマンドについて戸惑っていmergeます。

R では、とにかくすべてをマージするので、データを間違ってマージすることを心配する必要はありません。Yデータフレームはデータフレーム内の複製された各行にマージされるため、共通の列に重複が含まれていても心配する必要はありませんX。(all=FALSEで使用merge)

Xしかし、Stata の場合、マージに進む前に重複行を削除する必要があります。

merge続行するには、マスターテーブルの共通列が一意である必要があるとStataで想定されていますか?

4

2 に答える 2

6

あなたの質問に対する答えはノーです。その理由を説明しようと思います。

あなたが言及したリンクは、Stataで可能な1つのタイプのマージ、つまり1対多のマージのみをカバーしています。

merge 1:m varlist using filename

他のタイプのマージも可能です:

指定されたキー変数での 1 対 1 のマージ

merge 1:1 varlist using filename

指定されたキー変数での多対 1 マージ

merge m:1 varlist using filename

指定されたキー変数での多対多のマージ

merge m:m varlist using filename

観察による1対1のマージ

merge 1:1 _n using filename

詳細、説明、および例については、 を参照してhelp mergeください。

観測がデータセット内で一意であるかどうかがわからない場合は、次のチェックを実行できます。

bysort idvar: gen N = _N

ta N

1 より大きい N の値が見つかった場合、観測値が idvar に関して一意ではないことがわかります。

mergeこれは、実際には、Stata 11 で導入されたコマンドの新しい構文です。Stata 11 より前は、merge コマンドは少し単純でした。データを並べ替えるだけで、次のことができます。

merge varlist using filename

ちなみに、この古い構文は Stata 11 以降でも使用できます。

于 2011-09-07T09:07:26.050 に答える
0

joinby, unmatched(both) は、R コマンドのマージに対応するコマンドです。

特に、merge m:m は、ドキュメンテーションが意味することに反して、多対多のマージ (つまり、完全な結合) を行いません。

于 2015-06-05T00:13:06.643 に答える