我有两个类似于下表的数据集:
+------------+
| id | var1 |
|----+-------|
| 1 | 42082 |
| 2 | 42275 |
| 2 | 42474 |
| 3 | 42141 |
| 3 | 42502 |
| 4 | 42203 |
+------------+
+------------+
| id | var2 |
|----+-------|
| 1 | 41783 |
| 2 | 42120 |
| 4 | 42218 |
| 4 | 41525 |
+------------+
我想创建一个像下面这样的数据集:
+--------------------+
| id | var1 | var2 |
|----+-------+-------|
| 1 | 42082 | 41783 |
| 2 | 42275 | 42120 |
| 2 | 42474 | 42120 |
| 4 | 42203 | 42218 |
| 4 | 42203 | 41525 |
+--------------------+
但是,当我使用merge
命令时:
merge id using table2
我得到以下信息:
+--------------------+
| id | var1 | var2 |
|----+-------+-------|
| 1 | 42082 | 41783 |
| 2 | 42275 | 42120 |
| 2 | 42474 | 42120 |
| 3 | 42141 | . |
| 3 | 42502 | . |
| 4 | 42203 | 42218 |
| 4 | 42203 | 41525 |
+--------------------+
我也尝试使用append
命令:
append using table2
但是在这种情况下,我得到了:
+--------------------+
| id | var1 | var2 |
|----+-------+-------|
| 1 | 42082 | . |
| 2 | 42275 | . |
| 2 | 42474 | . |
| 3 | 42141 | . |
| 3 | 42502 | . |
| 4 | 42203 | . |
| 1 | . | 41783 |
| 2 | . | 42120 |
| 4 | . | 42218 |
| 4 | . | 41525 |
+--------------------+
我在做什么错了?
答案 0 :(得分:1)
您需要使用joinby
命令:
clear
input id var2
1 41783
2 42120
4 42218
4 41525
end
tempfile dataset2
save `dataset2'
clear
input id var1
1 42082
2 42275
2 42474
3 42141
3 42502
4 42203
end
joinby id using `dataset2'
list, sepby(id)
+--------------------+
| id var1 var2 |
|--------------------|
1. | 1 42082 41783 |
|--------------------|
2. | 2 42275 42120 |
3. | 2 42474 42120 |
|--------------------|
4. | 4 42203 42218 |
5. | 4 42203 41525 |
+--------------------+