如何用两个j变量重塑我的数据,其中一个变量是一个字符串?

时间:2016-07-21 08:57:13

标签: stata

我的数据看起来有点像这样。第一行是变量名,其余是我的值。 year描述了选举年份,nutsid是一种区域标识符,nutsname是该区域的名称。现在我想关注接下来的三个:spoovpfpo是选举中的政党名称。我希望将它们全部组合在一个名为party的变量下,并保留我现在拥有的长格式。

   | year     nutsid    nutsname        spo      ovp      fpo|
1. | 2008     AT11      Burgenland    73565    52531    29812|
2. | 1990     AT11      Burgenland    88547    62675    19508|
3. etc

到目前为止,我尝试使用reshape命令首先将其重新整形为宽格式,然后将其重命名为p_spop_ovpp_fpo使用

reshape long p_, i(nutsid) j(year party) string

我无法说这是一个聪明的主意,或者说它有效,因为它只是给了我一个名为year的新ID,其值"party"一遍又一遍地写在其下面。

但是我想知道是否还有其他命令我应该用来获取我所拥有的:

   | year     nutsid    nutsname      party  votes|
1. | 2008     AT11      Burgenland    spo    73565|    
2. | 2008     AT11      Burgenland    ovp    52531|    
3. | 2008     AT11      Burgenland    fpo    29812|    
4. | 1990     AT11      Burgenland    spo    88547|
5. | 1990     AT11      Burgenland    ovp    62675|
6. | 1990     AT11      Burgenland    fpo    19508|
7. etc

1 个答案:

答案 0 :(得分:1)

这里的一些小细节很混乱或不清楚:

  1. 在Stata中,变量名称不应被视为或描述为数据的“第一行”,尽管它们将在(例如)数据编辑器中显示为标题。 Stata不是电子表格应用程序。

  2. 您提到的reshape命令要求spo ovp fporename d p_spo p_ovp p_fpo 之前 reshape;此重命名不遵循reshape

  3. 由于您只提供部分语法,所以您所做的事情并不清楚。

  4. 那就是说,你想要的只是一个简单的reshape

    clear 
    input year str4 nutsid str10  nutsname        spo      ovp      fpo
    2008     AT11      Burgenland    73565    52531    29812
    1990     AT11      Burgenland    88547    62675    19508
    end 
    rename (spo ovp fpo) (votes=) 
    reshape long votes, i(nutsid year) j(party) string 
    list, sepby(nutsid year) 
    
         +--------------------------------------------+
         | nutsid   year   party     nutsname   votes |
         |--------------------------------------------|
      1. |   AT11   1990     fpo   Burgenland   19508 |
      2. |   AT11   1990     ovp   Burgenland   62675 |
      3. |   AT11   1990     spo   Burgenland   88547 |
         |--------------------------------------------|
      4. |   AT11   2008     fpo   Burgenland   29812 |
      5. |   AT11   2008     ovp   Burgenland   52531 |
      6. |   AT11   2008     spo   Burgenland   73565 |
         +--------------------------------------------+
    

    在此数据视图中,您有两个所谓的i变量和一个j变量。

    请注意这里使用input代码来提供一个数据示例,该示例将在没有您的示例所需的工程设计的情况下运行。您可以使用dataex安装命令ssc inst dataex,以便自己轻松实现。