【问题标题】:Generate new variable from observations in multiple variables从多个变量的观察中生成新变量
【发布时间】:2019-08-20 20:42:30
【问题描述】:

我有一个示例数据集,其中包含变量 datespx(市场价格)、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_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 命令,但无法提出可能的解决方案。

【问题讨论】:

    标签: stata reshape data-management


    【解决方案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 |
         +------------------------------+
    

    【讨论】:

    • 您好,非常感谢您的解决方案以及您的帮助!对我也有效!
    猜你喜欢
    • 1970-01-01
    • 2013-12-03
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    相关资源
    最近更新 更多