Stata面板数据中按机构统计员工人数的技术咨询
解决Stata中统计机构内员工数量的问题
你遇到的问题其实很常见——因为你的数据每行对应发薪周期,同一个员工会在所属机构下重复出现多次,直接用egen count(employee), by(agency)统计的是该机构的总发薪周期行数,而非不重复的员工数量。下面给你两种靠谱的解决方法:
方法1:用distinct命令(Stata 13及以上版本适用)
这是最直接的方式,distinct函数可以直接统计分组内不重复的观测值数量:
egen employeecount = distinct(employee), by(agency)
这条命令会在每个机构组内,自动统计不重复的employeeID数量,完美得到你要的员工总数。
方法2:标记员工首次出现后求和(兼容所有Stata版本)
如果你的Stata版本较低不支持distinct,可以先标记每个员工在所属机构中的首次出现,再通过求和得到员工数:
- 先按机构+员工排序,标记每个员工的第一行数据:
bysort agency employee: gen first_occurrence = (_n == 1)
这里first_occurrence变量在每个员工的第一行取值为1,其余行取值为0。
2. 然后按机构对这个标记变量求和,得到该机构的员工总数:
egen employeecount = sum(first_occurrence), by(agency)
额外提醒
要确保你的数据中,每个employeeID只对应一个agency(即员工不会跨机构任职)。如果存在员工跨机构的情况,你需要先明确统计逻辑:是按员工当前所属机构统计,还是按发薪周期对应的机构分别统计,再调整上述命令。
内容的提问来源于stack exchange,提问作者mimirose
相关产品推荐
相关产品推荐

