我的Stata数据集中有以下变量:
clear
input BGJTH98 GJKE54 SDKA12 JLTH65 VCNH58
2907 199 641 202 487
2908 199 641 202 487
2909 199 641 202 487
2910 199 641 202 487
2911 199 641 202 487
2912 199 641 202 487
2913 199 641 202 487
2914 199 641 202 487
2915 199 641 206 487
2916 199 641 202 487
2917 199 641 202 487
2918 199 641 202 487
2919 199 641 202 487
2920 204 641 202 487
2921 204 641 202 487
2922 204 641 202 487
2923 204 641 202 487
2924 204 641 202 487
2925 204 641 202 487
2926 204 641 202 487
2927 204 641 202 487
2928 204 641 202 487
2929 204 641 202 487
2930 204 641 202 487
2931 204 641 204 492
2932 204 641 204 492
2933 204 641 204 492
2934 204 641 204 492
2935 204 641 204 492
2936 204 641 204 492
end
我试图将这些变量一个接一个地堆叠,但是我没有得到我期望的结果:
stack *, into(a) clear
例如:
_stack a
1 2907
1 2908
1 2909
1 2910
1 2911
_stack a
2 199
2 199
2 199
2 199
2 199
2 199
但是,我想要的是下面的输出:
_stack a
1 2907
1 199
1 202
1 641
1 487
2 2908
2 199
2 202
2 641
2 487
如果可能,我还要保存变量名。
答案 0 :(得分:3)
这是使用reshape
命令最好解决的问题:
rename (*) (a=)
generate _i = _n
reshape long a, i(_i) j(_j) string
list in 1/10
+---------------------+
| _i _j a |
|---------------------|
1. | 1 BGJTH98 2907 |
2. | 1 GJKE54 199 |
3. | 1 JLTH65 202 |
4. | 1 SDKA12 641 |
5. | 1 VCNH58 487 |
|---------------------|
6. | 2 BGJTH98 2908 |
7. | 2 GJKE54 199 |
8. | 2 JLTH65 202 |
9. | 2 SDKA12 641 |
10. | 2 VCNH58 487 |
+---------------------+