我必须追加三个名为A
,B
和C
的数据集,其中包含不同年份的数据(例如1990, 1991...2014
)。
问题在于,并非所有数据集都包含所有调查年份,因此需要在添加之前手动删除不匹配的年份。
我想知道是否有任何方法可以追加三个(或更多)数据集,这些数据集将仅在数据集中保留匹配的变量(在这种情况下为年份)。
答案 0 :(得分:2)
考虑以下玩具示例:
clear
input year var
1995 0
1996 1
1997 2
1998 3
1999 4
2000 5
end
save data1, replace
clear
input year var
1995 6
1996 9
1998 7
1999 8
2000 9
end
save data2, replace
clear
input year var
1995 10
1996 11
1997 12
2000 13
end
save data3, replace
没有可以强迫append
做您想要的事情的选项,但是您可以执行以下操作:
use data1, clear
append using data2 data3
duplicates tag year, generate(tag)
sort year
list
+------------------+
| year var tag |
|------------------|
1. | 1995 0 2 |
2. | 1995 6 2 |
3. | 1995 10 2 |
4. | 1996 9 2 |
5. | 1996 1 2 |
|------------------|
6. | 1996 11 2 |
7. | 1997 2 1 |
8. | 1997 12 1 |
9. | 1998 7 1 |
10. | 1998 3 1 |
|------------------|
11. | 1999 8 1 |
12. | 1999 4 1 |
13. | 2000 13 2 |
14. | 2000 5 2 |
15. | 2000 9 2 |
+------------------+
drop if tag == 1
list
+------------------+
| year var tag |
|------------------|
1. | 1995 0 2 |
2. | 1995 6 2 |
3. | 1995 10 2 |
4. | 1996 9 2 |
5. | 1996 1 2 |
|------------------|
6. | 1996 11 2 |
7. | 2000 13 2 |
8. | 2000 5 2 |
9. | 2000 9 2 |
+------------------+
您还可以通过找到变量tag
的最大值并将所有观察值保持在该值上来进一步推广这种方法:
summarize tag
keep if tag == `r(max)'