我在Stata中有一个面板数据集,它有行业和年份维度以及其他7个变量。我想通过行业年组合将此面板拆分为子面板,然后使用mahascore
mahapick.ado
包中的firm_id year ind_id var1 var2 var3 var4 var5 var6 var 7
1 2008 1 1 2 3 4 5 6 7
1 2009 1 1 2 3 4 5 6 7
1 2010 1 1 2 3 4 5 6 7
.................................................................
2 2008 2000 1 2 3 4 5 6 7
2 2009 2000 1 2 3 4 5 6 7
2 2010 2000 1 2 3 4 5 6 7
...............................................................
来计算新变量。
这是数据样本的结构(varlist的数字不是真实的,在我的数据集中它们只是一些数值变量):
mahascore
对于这些变量中的每一个,我想生成72个新变量(9个行业* 8年),因此缺少不属于行业年组合的每个变量的所有值。比我想要生成72个变量列表,我将用它来分别计算每个行业年组合的*Generate 504 variables(8 years*9 industries * 7variables):
forvalues i = 2008/2015 {
forvalues z = 1/9000 {
gen var1_`i'_`z'=var1 if year == `i' & ind_id == `z'
gen var2_`i'_`z'=var2 if year == `i' & ind_id == `z'
gen var3_`i'_`z'=var3 if year == `i' & ind_id == `z'
gen var4_`i'_`z'=var4 if year == `i' & ind_id == `z'
gen var5_`i'_`z'=var5 if year == `i' & ind_id == `z'
gen var6_`i'_`z'=var6 if year == `i' & ind_id == `z'
gen var7_`i'_`z'=var7 if year == `i' & ind_id == `z'
}
}
*Create 72 varlists (with 7 variables for each year-industry combination):
global varlist1 var1_2008_1 var2_2008_1 var3_2008_1 var4_2008_1 var5_2008_1 var6_2008_1 var7_2008_1
global varlist2 var1_2009_1 var2_2009_1 var3_2009_1 var4_2009_1 var5_2009_1 var6_2009_1 var7_2009_1
....................................................................
*Create list of lists
global metavarlist varlist1 varlist2...varlist72
*Calculate distance
foreach v in $metavarlist {
mahascore `v', gen(dist_M_`v') refmeans compute
(马哈拉诺比斯距离)。行业ID(ind_ids)采用以下值{1 2000 3000 4000 5000 6000 7000 8000 9000}。这段时间跨度从2008年到2015年。
我写的代码是错误的,但我希望它有助于理解我在做什么:
body,p {color:red;}
也许有人可以在这里改进我的逻辑。
答案 0 :(得分:0)
太长了以适应评论的空间:
问题报告的全部内容是代码“错误”。对于那些无法对您的数据进行尝试(无法访问)的人来说,这意味着什么?除非你提供样本数据,意味着一个适度大小的完整数据集,并且用它的术语一致地重写问题,否则我看不出你的问题对其他任何人都有意义。
在这种情况下,由于经验丰富的Stata程序员使用这个用户编写的程序包的数量确实非常小,这种情况更加复杂。请注意,您之前的帖子没有收到任何答案,可能是出于类似的原因。
到目前为止,如此负面。
但我可以说你的开放双循环将创建 72000个新变量,即使它们中的大多数都是缺失值。不知何故,你知道你有9个行业,为什么你要循环1/9000
?在不同的地方,你说你想要
72个新变量
72 * 7个新变量
这些可能在某种程度上是一致的,但我不知道如何。
第二个代码块未完成。