重塑Stata中的复杂数据集,从长到宽

时间:2014-10-31 12:28:38

标签: dataset stata reshape

我希望reshape将此long数据集转换为wide个数据集。重塑将以fartyid作为我的唯一ID以landingsdato为条件完成,这意味着新的观察将由共享fartyID的所有landingsdato组成。我没有包含在内的大多数变量可以在没有任何进一步考虑的情况下折叠,因为在这两个变量的条件下,它们将为每个观察保持相同的值。

问题在于此处包含的分类变量(artkodeprodukttilstandkodestrrelsesgruppering),我希望以一般化的方式保留所有信息,以便我可以使用它们来处理整个数据集。 produkvekt是一个数值变量,表示artkode的数量。

fartyid landingsdato    artkode artbokml    produkttilstandkode strrelsesgruppering produktvekt 
1926005936  01.03.2004  1032    Sei         211                 4023999             20  
1926005936  01.03.2004  1032    Sei         211                 4012023             14  
1926005936  01.03.2004  102201  Skrei           641                 3000000         55  
1926005936  01.03.2004  102201  Skrei           642                 3000000         60  
1926005936  01.03.2004  102201  Skrei           211                 4010025         60  
1926005936  01.03.2004  102201  Skrei           211                 4025999         500 

如果可能的话,我无法理解应如何做到这一点,所以我很感激所有的投入。

分类变量的唯一值:

strrelsesgruppering: 457
produkttilstandkode: 53
artkode: 149

作为我如何结束的一个例子:

fartyid landingsdato    1032    produkttilstandkode strrelsesgruppering produktvekt 
1926005936  01.03.2004  1       211                 4023999             20  

然后随后的artkode排成行,但这会在处理数据集时给我带来问题,因为我在不同的列中有几个相同的artkode。< / p>

如果可能的话,我无法理解应如何做到这一点。

1 个答案:

答案 0 :(得分:1)

这是我的帖子的答案,也是对上面表示赞扬的尼克的答案。

想要重塑的原因是每次“fartyid”观察都是描述一艘运送鱼的船。对于一个单独的“fartyid”来说,同样的“landingsdato”只是几行描述相同的交付,因为数据是从分别为不同的鱼类买家交付的文件中收集的。目的是在一行中获得每次交付的所有非常量信息,并从那里运行我的回归。我用下面的代码完成了这个:

sort fartyid landingsdato_ny
egen IDtur=group (fartyid landingsdato_ny)

sort artkode produkttilstandkode
egen kombinasjon=group(artkode produkttilstandkode)
forvalues k = 1/309 {
    gen RQArtProd`k' = rundvekt if kombinasjon==`k'
    gen FQArtProd`k' = fangstverdi if kombinasjon==`k'
    compress RQArtProd`k'
    compress FQArtProd`k'

collapse (first) *constant variable1 constant variable2.... (sum) **RQArtProd`k' FQArtProd`k', by(IDtur)

*These variables are just an illustration of several constant variables
**Also an illustration. Original code contains around 900 variables generated by the above loop.

我为每次单独旅行都折叠了所有变量。关于这艘船的信息当然是不变的,并且(第一次)被折叠了,而我使用的两个变量的组合(总和)。最后,这给了我关于总捕获量的信息,每种物种组合的重量和值以及它的条件(有或没有头等)我还必须重命名循环中生成的所有变量。最后,由于不一致,提到的“strrlesgruppering”完全被删除了。