Stata 如何计算与某个企业位于同一地区、不同行业的其他企业某个变量的均值?

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

生成代码:

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

我们可以使用下面的代码求每个公司的:

*- 1. 地区总的
bysort city year: egen invest_total1 = sum(invest)
*- 2. 地区行业总的
bysort city year industry: egen invest_total2 = sum(invest)
*- 3. 插值就是其他行业的
gen invest_total3 = invest_total1 - invest_total2
*- 4. 总行业的数量
bysort city year: egen n1 = count(industry)
*- 5. 本行业的数量
bysort city year industry: egen n2 = count(industry)
*- 6. 其他行业的数量
gen n3 = n1 - n2
*- 7. 均值
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

也可以按照这七步代码解决:

*- 1. 每个行业的总值
bysort sector_id: egen sum1 = sum(value)
*- 2. 每个省份/行业的总值
bysort sector_id prov_id: egen sum2 = sum(value)
*- 3. 差值就是某行业在其他省份的总值
gen sum3 = sum1 - sum2

*- 4. 每个省份的公司数量
bysort prov_id: egen n1 = count(prov_id)
*- 5. 每个省份每个行业的公司数量
bysort prov_id sector_id: egen n2 = count(prov_id)
*- 6. 差值就是每个省其他行业的公司数量
gen n3 = n1 - n2
*- 7. 计算均值
gen mean = sum3 / n3
drop n* sum*

这样我们就解决了这个问题!

点击这里跳转到 RStata 短书平台获取附件:Stata 如何计算与某个企业位于同一地区、不同行业的其他企业某个变量的均值?

评论