【问题标题】:Reshape financial data from wide to long Stata重塑财务数据从宽到长 Stata
【发布时间】:2015-11-30 06:24:10
【问题描述】:

我有以下数据:

---------------------------------
|Company | Item  | 2012 | 2013 |
---------------------------------    
|  ABD   |  TA   | 100  | 110  |  
|  ABD   | EBIT  | 200  | 220  |  
|  JKL   |  TA   | 115  | 120  |  
|  JKL   | EBIT  | 250  | 270  |  

其中Company 是特定公司的 ID,Item 标识该公司在 2012 年和 2013 年的一些特定信息,例如利润或资产。

我想把它改成下面的

---------------------------------
|Company | Year  | TA   | EBIT | 
--------------------------------- 
|  ABD   | 2012  | 100  | 200  |  
|  ABD   | 2013  | 110  | 220  |  
|  JKL   | 2012  | 115  | 250  |  
|  JKL   | 2013  | 120  | 270  |  

我已经尝试reshape它与

reshape long 2012 2013, i(Company) j(Item) string

但是,这不起作用。

【问题讨论】:

    标签: stata transformation reshape financial


    【解决方案1】:

    永远不要只说某件事“不起作用”。准确说出发生了什么(在这种情况下,给出错误信息)并解释为什么它不是你想要的。

    在您的情况下,20122013 不可能是 Stata 变量名,因为没有 Stata 变量名可以以数字开头。如果2012 是允许的变量名,Stata 怎么可能判断2012 是指它自己还是同名的变量? (也许20122013 是变量标签,但reshape 不适用于变量标签。)

    在任何情况下,reshape 都不应该提供变量名。它需要存根,如帮助中所述。

    我们看不到您的变量名称。假设您有v2012v2013

    clear 
    input str3 Company  str4 Item v2012 v2013
      ABD     TA    100   110    
      ABD    EBIT   200   220    
      JKL     TA    115   120    
      JKL    EBIT   250   270  
    end 
    reshape long v , i(Company Item) j(Year) 
    list 
    
         +-----------------------------+
         | Company   Item   Year     v |
         |-----------------------------|
      1. |     ABD   EBIT   2012   200 |
      2. |     ABD   EBIT   2013   220 |
      3. |     ABD     TA   2012   100 |
      4. |     ABD     TA   2013   110 |
         |-----------------------------|
      5. |     JKL   EBIT   2012   250 |
      6. |     JKL   EBIT   2013   270 |
      7. |     JKL     TA   2012   115 |
      8. |     JKL     TA   2013   120 |
         +-----------------------------+
    reshape wide v, i(Company Year) j(Item) string 
    renpfix  v 
    
    list
    
         +-----------------------------+
         | Company   Year   EBIT    TA |
         |-----------------------------|
      1. |     ABD   2012    200   100 |
      2. |     ABD   2013    220   110 |
      3. |     JKL   2012    250   115 |
      4. |     JKL   2013    270   120 |
         +-----------------------------+
    

    请注意您的问题的进一步曲折。 i(Company) 不会有任何作用,因为每个标识符都有多个观察值。您需要两次调用reshape,因为需要long 才能获得不同的年份作为观察值,需要wide 才能获得不同的项目作为变量。

    in this FAQ 记录了对双重 reshape 的频繁需求:Stata 中的 search reshape 会指向它。

    如果你的变量名不同,你的语法显然会不同。正如刚刚引用的常见问题解答中所记录的那样,您可能需要先rename 您的变量,然后才能使用reshape

    注意:经过编辑,该程序称为 Stata,并且在其整个 30 年的历史中一直如此。任何告诉您的消息来源都不具有权威性。

    【讨论】:

    • 谢谢你。抱歉,如果我没有正确用词,这是我第一次提问。尽管如此,我们还是非常感谢您的帮助。
    • 艺术,这并不容易,是想象你正在阅读你自己的问题,并考虑你是否提供了尽可能多的相关信息。请注意,您可以接受答案,您(和我)将因此获得一些声誉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    相关资源
    最近更新 更多