最近有个小伙伴问到了这样一个问题,她想求数据中与某个行业位于同一地区、不同行业的企业的某个变量的均值,例如对于下面的示例数据:

生成代码:
clear all input str10 city year str2 company industry invest "北京" 2013 "a1" 1 3 "北京" 2013 "a2" 1 4 "北京" 2013 "b1" 2 9 "北京" 2013 "b2" 2 10 "北京" 2013 "c1" 1 5 "北京" 2013 "c2" 1 6 "北京" 2013 "d1" 1 8 "北京" 2013 "d2" 1 8 "北京" 2013 "d3" 1 8 "北京" 2013 "e1" 3 3 "北京" 2013 "e2" 3 3 end
|
对于 a1 公司,和其位于同一地区不同行业的公司是 b1/b2/e1/e2,其 invest 变量的均值是:(9 + 10 + 3 + 3) / 4 = 6.25
我们可以使用下面的代码求每个公司的:
bysort city year: egen invest_total1 = sum(invest)
bysort city year industry: egen invest_total2 = sum(invest)
gen invest_total3 = invest_total1 - invest_total2
bysort city year: egen n1 = count(industry)
bysort city year industry: egen n2 = count(industry)
gen n3 = n1 - n2
gen mean = invest_total3 / n3 drop invest_total* n*
|
结果如下:

她还在经管之家上发现了一个陈年的老问题:

这个问题的解决思路也是类似的。首先生成示例数据:
clear input firm_id value sector_id prov_id 1 4 1 1 2 6 1 1 3 2 2 1 4 8 2 1 5 6 1 2 6 4 1 2 7 8 2 2 8 8 2 2 end
|

也可以按照这七步代码解决:
bysort sector_id: egen sum1 = sum(value)
bysort sector_id prov_id: egen sum2 = sum(value)
gen sum3 = sum1 - sum2
bysort prov_id: egen n1 = count(prov_id)
bysort prov_id sector_id: egen n2 = count(prov_id)
gen n3 = n1 - n2
gen mean = sum3 / n3 drop n* sum*
|

这样我们就解决了这个问题!
点击这里跳转到 RStata 短书平台获取附件:Stata 如何计算与某个企业位于同一地区、不同行业的其他企业某个变量的均值?
评论