合并Stata中的数据库,并根据合并数据的标识和值创建新变量

时间:2017-12-18 02:19:28

标签: stata

我有两个数据库,DB1和DB2,我想合并,但我遇到了困难。我想帮助确定Stata称之为我想要做什么。

DB1有大约1000个观察结果,如下所示:

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

DB2由65个ID组成,每个ID包含大约1000个观察值。它看起来像:

   +--------------+
   | 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 |  
   +--------------+

我想将DB2与DB1合并,以便最终数据库看起来像:

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

我一直在阅读有关merge命令的内容,但仅此一项不会创建我的终极数据库。

你能指导我帮助我的材料吗?你怎么称呼我想做什么?我觉得我需要命令Stata生成新的变量。

1 个答案:

答案 0 :(得分:0)

@William Lisowski是对的。这可以满足您的要求,而不是简单的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