ここで本当に基本的なものが欠けているように感じます...
Stata の FranceSQ.dta と FranceHQ.dta の 2 つのデータセットをマージしようとしています。どちらも、観測を一意に識別する「uid」という名前の変数を作成しました。
use FranceSQ, clear
merge 1:1 uid using FranceHQ, gen(_merge) keep(match)
今私を混乱させているのは、uidが私の観察を一意に識別していないことを教えてくれることです。私が気付いたのは、FranceSQ を開くとすべてが正常であり、uid 変数を見ると、次の値になっていることです...
25010201
25010202
25010203
...
しかし、マージを実行しようとすると、すべての値が変更されるため、...
2.50101e+10
2.50101e+10
2.50101e+10
...
どんな助けでも大歓迎です...簡単な答えがあると確信していますが、現時点では私を避けています。
***編集** *
ニックのアドバイスが役に立ちました、ありがとう! これは私がやっていたことがうまくいかなかったので、なぜうまくいかなかったのか誰かが指摘できるのだろうか。
1) uid 変数を文字列としてキャストする 2 つの数値変数を連結して、各データセットに uid 変数を作成しました。
2) データセット全体で destring を実行しました (誤ってキャストされた変数が多数あったため)。これにより、uid が double に変わりました。
3) 次に、uid を文字列として再キャストします。これで、最初のマージを行うことができませんでした。すべての観測値を変更している値が、データセットの最後の値であることに気付きました。
4) 微調整していたという理由だけで、uid 変数を double として再キャストし、同じ結果を得ていました。
最初から uid 変数を文字列として再キャストするのではなく、最初からやり直すことでようやく機能するようになりましたが、以前の努力がなぜ機能しなかったのか、またはマージコマンドが実際にどのように決定されたのかについてはまだ途方に暮れています自分の価値観を変える。