【问题标题】:How to easily define a constant variable in a panel in Stata如何在Stata的面板中轻松定义常量变量
【发布时间】:2014-06-11 17:21:59
【问题描述】:

我在 Stata 中有一个面板数据集(国家年)。例如,我有许多国家在 1990、1991、..2010 年的 GDP。

我想定义一个变量“2006 年的 GDP”,它存在于所有年份并包含 2006 年的 GDP 值。

我现在这样做的方式可行,但有点笨拙,所以我希望有人会有更好的主意:

   qui gen gdp2006=.

   replace gdp2006=gdp if year==2006

   forval t=2007/2010 {
       sort country year
       qui replace gdp2006=gdp2006[_n-1] if year==`t'&country[_n-1]==country
   }
   forval t=2005(-1)1990 {
       sort country year
       qui replace gdp2006=gdp2006[_n+1] if year==`t'&country[_n+1]==country
   }

谢谢!

【问题讨论】:

    标签: panel stata


    【解决方案1】:

    你可以在一行中做到这一点

    egen gdp2006 = mean(gdp / (year == 2006)), by(country) 
    

    (year == 2006) 的计算结果为 1 或 0,因此表达式

    gdp / (year == 2006)
    

    year 为2006 时,评估为gdp,否则缺失。在计算每个国家的平均值时会忽略缺失值。

    如需更广泛和更系统的讨论,请参阅http://www.stata-journal.com/article.html?article=dm0055(发布后几周内所有人都可以访问)。

    附:您知道的技术可以缩短您的代码:

    gen gdp2006 = gdp if year == 2006
    bysort country (gdp2006): replace gdp2006 = gdp2006[_n-1] if _n > 1 
    

    【讨论】:

      【解决方案2】:
      gen gdp2006_temp = gdp if year == 2006
      bys country : egen gdp2006 = total(gdp2006_temp)
      drop gdp2006_temp
      

      这里的关键是使用by: 前缀以及total() egen 函数忽略缺失值这一事实。

      【讨论】:

        猜你喜欢
        • 2010-10-02
        • 1970-01-01
        • 2013-08-07
        • 2016-03-05
        • 2020-08-12
        • 2021-09-17
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        相关资源
        最近更新 更多