2011-09-07 19 views
8

Rユーザーのため、thisリソースを使用してStataを学習していて、mergeコマンドについて困惑しています。RとStataのマージコマンドの比較

Rでは、データを誤ってマージすることを心配する必要はありません。なぜなら、とにかくすべてをマージするからです。 YデータフレームがXデータフレームの重複行それぞれにマージされるため、共通の列に重複が含まれていても心配する必要はありません。

しかし、Stataのため

が、私は合併に進む前に、 Xから重複行を削除する必要があります( mergeall=FALSEを使用)。

mergeを続行するには、マスター表の共通列が一意である必要があります。

+0

私は[MMERGE](http://econpapers.repec.org/software/bocbocode/s420201.htm)が本当に便利だと思っています。 – radek

+2

FYI:Stata 11から、 'mmerge'の機能が"公式の "' merge'コマンドに組み込まれました。 –

答えて

6

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

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

merge 1:m varlist using filename

他のタイプが考えられます。

一対一の指定したキー変数

にマージ

merge 1:1 varlist using filename

多対1指定したキーの変数にマージ

merge m:1 varlist using filename

多対多のは、指定されたキー変数

merge m:m varlist using filename

一対一の観察により、マージ

merge 1:1 _n using filename

詳細、説明と例がhelp mergeで見つけることができるのマージ。あなたが1より大きいNの値を見つけた場合は、

bysort idvar: gen N = _N

ta N

観測データセットで一意であるかどうかわからない場合

は、次のチェックを行うことができます観察はidvarに関して独特ではないことを知っています。

これは実際にはStata 11で導入されたmergeコマンドの新しい構文です。Stata 11より前のバージョンでは、mergeコマンドは少しシンプルでした。あなたは単にあなたのデータをソートしなければならなかった、そしてあなたができる:

merge varlist using filename

をところで、あなたはまだStataの11以上で、この古い構文を使用することができます。

+2

かなり包括的な答えが得意です。以前の構文は単純でしたが、データが期待通りではない場合には、検出が困難なあらゆる問題を引き起こしたため、構文が変更されました。古い構文を使用しても動作しますが、警告が返されます。 –

+0

@ gsk3:良いコメントです。個人的には、私のプログラムとクラスノートに新しいマージ構文を採用するのに多少時間がかかりました。新しい構文は一見したところでもっと複雑に見え、感じます。ただし、データの問題に注意を喚起する可能性があるため、すぐに利益を得ることができます。 –

+2

Stataには、最初は言語を理解するのが難しく、長期的にはより良いものにするために何かしたことは功績です。特に、顧客のほとんどがプログラミングの背景から来ているわけではないので、これ(おそらく最も強いタイピングに似ています)がどれほど多くのものを手に入れているかはすぐにはわかりません:-) –

0

joinby、不一致(both)は、Rコマンドマージに対応するコマンドです。

特にm:mをマージすると、ドキュメントに示されている内容とは多少のマージ(つまり完全結合)はありません。

関連する問題