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