合并Stata中的数据库,并根据合并数据的身份和价值创建新的VARS



我有两个数据库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生成新变量。

@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 

最新更新