我试图找到Stata中变量的四个最大数字。我想根据销售额来计算不同群体的行业集中度:
我公司的销售额来自多年。这些公司属于基于行业和国家的不同群体。因此,我想找到:
行业集中度=(一个行业和国家集团一年的4个最大销售额)/行业 - 国家集团一年所有销售额的总和)
我的观察分为:
公司 - 国家 - 年 - 行业 - 销售-a -------- usa ------- 1 ---------- 1 ---------- 300
-a --------- USA ------- 2 ---------- 1 -------- 4000
-b --------- GER ------- 1 ---------- 1 -------- 200
-b --------- GER ------- 2 ---------- 1 -------- 400
-c --------- USA ------ 1 ---------- ---------- 1 100
-c --------- USA ------ 2 ---------- ---------- 1 300
-d --------- USA ------ 1 ---------- ---------- 1 400
-d --------- USA ------ 2 ---------- ---------- 1 200
-e --------- USA ------ 1 ---------- ---------- 1 7000
-e --------- USA ------ 2 ---------- ---------- 1 900
-f ---------- ------ GER 1 ---------- ---------- 2 100
-f --------- GER ------ 2 ---------- ---------- 2 700
-h --------- GER ------ 1 ---------- ---------- 2 700
-h --------- GER ------ 2 ---------- ---------- 2 600
-.................等............................ .........
我有大约10000家公司大约10年。这只是一个例子。我知道如何找到每个行业 - 国家 - 年组的销售总额:
bysort country industry year: egen sum_sales = sum(sales)
答案 0 :(得分:2)
四大的总和是
bysort country industry year (sales): gen four_biggest_sales = sales[_N] + sales[_N-1] + sales[_N-2] + sales[_N-3]
前提是没有sales
的值丢失。如果只有三个值,那么您需要
max(0, sales[_N-3])
对两个值,一个值或无值的情况进行类似的修正。
这一切都来自by:
的基本语法。有关教程,请参阅http://www.stata-journal.com/article.html?article=pr0004。
(稍后)如果有遗漏,则可以通过
进行隔离gen isnotmiss = !missing(sales)
bysort isnotmiss country industry year (sales): gen four_biggest_sales = sales[_N] + sales[_N-1] + sales[_N-2] + sales[_N-3]