在多个层中重塑整个广场

时间:2017-04-12 16:29:49

标签: stata

我有一个数据集应该重新整形为宽格式。

目前数据很长,观察中确定了某个学校中每个人的“区域”。常规重塑代码的问题出现是因为数据有两层:首先应重新整形,以便每个观察点唯一地标识一个人和一个学校(具有多个区域)。其次,我们最终应该为每个人(包含多个学校和多个区域)进行一次观察。

以下是现在数据的示例:

 * Example generated by -dataex-. To install: ssc install dataex
clear
input str4 id str2 school_code str1 area
"a111" "1x" "a"
"a111" "1x" "b"
"a111" "1x" "c"
"a111" "1y" "a"
"a111" "1y" "b"
"a111" "1y" "c"
"x222" "1z" "d"
"x222" "1z" "e"
"x222" "1z" "f"
"x222" "1k" "g"
"x222" "1k" "h"
"x222" "1k" "i"
end

以下是我想要数据集的示例:

 * Example generated by -dataex-. To install: ssc install dataex
clear
input str4 id str2(school_code_1 school_code_2) str1(school1_area1 school1_area2 school1_area3 school2_area1 school2_area2 school2_area3)
"a111" "1x" "1y" "a" "b" "c" "a" "b" "c"
"x222" "1z" "1k" "d" "e" "f" "g" "h" "i"
end

1 个答案:

答案 0 :(得分:0)

感谢使用dataex(SSC)的数据示例。

一旦您在this FAQ中注意到您可能需要创建新标识符的提示,这是标准reshape

clear
input str4 id str2 school_code str1 area
"a111" "1x" "a"
"a111" "1x" "b"
"a111" "1x" "c"
"a111" "1y" "a"
"a111" "1y" "b"
"a111" "1y" "c"
"x222" "1z" "d"
"x222" "1z" "e"
"x222" "1z" "f"
"x222" "1k" "g"
"x222" "1k" "h"
"x222" "1k" "i"
end

sort id, stable 
by id: gen j = _n 
reshape wide school_code area, i(id) j(j) 

list 

产生你的要求。

所有这一切,很难想象这个改变后的结构将使后来的Stata处理比原始数据结构更容易。此外,不同的新变量按任意变量名称分组。如果您的学校和学区的顺序不同,*1 *2 *3中的最终结果会有所不同。

小术语点:“格式”一词在计算中严重超载,涵盖(至少)文件格式,显示格式,数据结构和数据(存储)类型,无论是对还是错,就任何特定软件的正式术语而言被关注到。在Stata上下文中,有一个基于一个主要意义的format命令,显示格式。还有文件格式的正式概念(例如http://www.stata.com/help.cgi?dta)。因此,虽然模糊性很少持续很长时间,但我建议在这里讨论数据布局或结构(尽管后一个术语也过载了......)。