从多个变量的观测值生成新变量

时间:2019-08-20 20:42:30

标签: stata reshape data-management

我有一个示例数据集,其变量为datespx(市场价格),trans_1(股票1价格)和trans_2(股票2价格): / p>

* 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_iddatetrans_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

我已经通读过各种论坛,试图利用xposemergeappend命令,但是无法提出可能的解决方案。

1 个答案:

答案 0 :(得分:1)

以下对我有用:

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 |
     +------------------------------+