我希望reshape
将此long
数据集转换为wide
个数据集。重塑将以fartyid
作为我的唯一ID以landingsdato
为条件完成,这意味着新的观察将由共享fartyID
的所有landingsdato
组成。我没有包含在内的大多数变量可以在没有任何进一步考虑的情况下折叠,因为在这两个变量的条件下,它们将为每个观察保持相同的值。
问题在于此处包含的分类变量(artkode
,produkttilstandkode
和strrelsesgruppering
),我希望以一般化的方式保留所有信息,以便我可以使用它们来处理整个数据集。 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>
如果可能的话,我无法理解应如何做到这一点。
答案 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”完全被删除了。