2017-12-18 8 views
0

私はマージしたいDB1とDB2という2つのデータベースを持っていますが、 Stataが何をしようとしているのかを判断するのに助けが必要です。Stataのデータベースをマージし、マージされたデータのIDと値に基づいて新しい変数を作成します

DB1は、約1000の観測があり、次のようになります。

+----------+ 
    | date b | 
    |----------| 
1. | 1  7 | 
2. | 2  6 | 
3. | 3  7 | 
    +----------+ 

DB2は、約1000の観測で65のIDがそれぞれ構成されています。私は次のように究極のデータベースに見えるように、DB1とDB2をマージしたい

+--------------+ 
    | date id b | 
    |--------------| 
1. | 1  1 4 | 
2. | 2  1 4 | 
3. | 3  1 5 | 
4. | 1  2 9 | 
5. | 2  2 8 | 
6. | 3  2 7 | 
7. | 1  3 1 | 
8. | 2  3 2 | 
9. | 3  3 1 | 
    +--------------+ 

:それは何かのように見える私はmergeコマンドについて読んでてきたが、それだけでは作成されません

+------------------------------+ 
    | date b id1b id2b id3b ...| 
    |------------------------------| 
1. | 1  7 4 9  1 ...| 
2. | 2  6 4 8  2 ...| 
3. | 3  7 5 7  1 ...| 
    +------------------------------+ 

私究極のデータベース。

私にこれに役立つ資料を教えてもらえますか?私は何をしようとしていますか?新しい変数を生成するためにStataに命令する必要があるような気がします。

+0

は本当に私はどこに行くされているB理解しておくことはできません。 DB1とDB2の各bに異なる値を与え、次にマージされたデータセットのどこに行くのかを示す必要があります。 –

+0

@WilliamLisowski完了! –

+1

完全な返答はありませんが、DB2の 'reshape wide b'を使い、DB1と' merge 1:1 date'を開始したいと思います。 –

答えて

0

@ウィリアム・リソウスキーが正しい。これはあなたのために簡単にrenameの要請を受け取ります。分析に最適な構造であるかどうかは不明です。同様のデータを持つほとんどの作業は、さらにreshape longで簡単になります。実際

clear 
input date b 
1 7 
2 6 
3 7 
end 
save DB1 

clear 
input date id b 
1 1 4 
2 1 4 
3 1 5 
1 2 9 
2 2 8 
3 2 7 
1 3 1 
2 3 2 
3 3 1 
end 
reshape wide b, j(id) i(date) 
merge 1:1 date using DB1 

、私ははるかに通常直接long構造を得るために、このような何かをするだろう:

clear 
input date b 
1 7 
2 6 
3 7 
end 
rename b B 
save DB1 , replace 
clear 
input date id b 
1 1 4 
2 1 4 
3 1 5 
1 2 9 
2 2 8 
3 2 7 
1 3 1 
2 3 2 
3 3 1 
end 
merge m:1 date using DB1 
+1

私は長い構造のニックの好みに同意します。要求された方法でそれらをストリングすることを推奨するには、DB2のid変数とb変数の詳細を知る必要があります。 –

+0

ありがとうございます。 @nickcox私はあなたの提案された方法を試してみます。 BはID(i)Bの観測値と他のものとの線形結合である。 reshapeを使用した後、その行のすべてのID(i)Bの合計に等しいvarを生成しました。 しかし、あまりにも多くの変数があるのは本当に好きではありません。たぶんあなたの方法はより直感的です。 ありがとう! –

関連する問題