从多个变量中的观察生成新变量
Generate new variable from observations in multiple variables
我有一个示例数据集,其中包含变量 date
、spx
(市场价格)、trans_1
(股票 1 价格)和 trans_2
(股票 2 价格) :
* Example generated by -dataex-. To install: ssc install dataex
clear
input int(date spx) double(trans_1 trans_2)
14610 100 1 1
14611 102 1.1 .9
14612 103 1.21 .81
14613 104 1.321 .729
end
format %tdnn/dd/CCYY date
我需要重新排列数据,以便导出三个变量:trans_id
、date
和 trans_price
,其中每个股票 ID 和所有股票价格都存在数据集中的每个日期组合在一个 stock_price
变量中。
预期结果:
date spx trans trans_id
1/1/2000 100 1 1
1/2/2000 102 1.1 1
1/3/2000 103 1.21 1
1/4/2000 104 1.321 1
1/1/2000 100 1 2
1/2/2000 102 .9 2
1/3/2000 103 .81 2
1/4/2000 104 .729 2
我浏览了各种尝试使用 xpose
、merge
或 append
命令的论坛,但无法提出可能的解决方案。
以下对我有用:
generate id = _n
reshape long trans_ , i(id) j(_j)
drop id _j
bysort date (spx): generate id = _n
sort id (date)
list, sepby(id)
+------------------------------+
| date spx trans_ id |
|------------------------------|
1. | 1/1/2000 100 1 1 |
2. | 1/2/2000 102 1.1 1 |
3. | 1/3/2000 103 1.21 1 |
4. | 1/4/2000 104 1.321 1 |
|------------------------------|
5. | 1/1/2000 100 1 2 |
6. | 1/2/2000 102 .9 2 |
7. | 1/3/2000 103 .81 2 |
8. | 1/4/2000 104 .729 2 |
+------------------------------+
我有一个示例数据集,其中包含变量 date
、spx
(市场价格)、trans_1
(股票 1 价格)和 trans_2
(股票 2 价格) :
* Example generated by -dataex-. To install: ssc install dataex
clear
input int(date spx) double(trans_1 trans_2)
14610 100 1 1
14611 102 1.1 .9
14612 103 1.21 .81
14613 104 1.321 .729
end
format %tdnn/dd/CCYY date
我需要重新排列数据,以便导出三个变量:trans_id
、date
和 trans_price
,其中每个股票 ID 和所有股票价格都存在数据集中的每个日期组合在一个 stock_price
变量中。
预期结果:
date spx trans trans_id
1/1/2000 100 1 1
1/2/2000 102 1.1 1
1/3/2000 103 1.21 1
1/4/2000 104 1.321 1
1/1/2000 100 1 2
1/2/2000 102 .9 2
1/3/2000 103 .81 2
1/4/2000 104 .729 2
我浏览了各种尝试使用 xpose
、merge
或 append
命令的论坛,但无法提出可能的解决方案。
以下对我有用:
generate id = _n
reshape long trans_ , i(id) j(_j)
drop id _j
bysort date (spx): generate id = _n
sort id (date)
list, sepby(id)
+------------------------------+
| date spx trans_ id |
|------------------------------|
1. | 1/1/2000 100 1 1 |
2. | 1/2/2000 102 1.1 1 |
3. | 1/3/2000 103 1.21 1 |
4. | 1/4/2000 104 1.321 1 |
|------------------------------|
5. | 1/1/2000 100 1 2 |
6. | 1/2/2000 102 .9 2 |
7. | 1/3/2000 103 .81 2 |
8. | 1/4/2000 104 .729 2 |
+------------------------------+