计算给定月份的公司数量

时间:2020-04-15 06:39:27

标签: stata

我正在处理Stata中的数据集 第一列是公司名称。第二列是该公司的开始日期,第三列是该公司的到期日期。如果缺少到期日,则该公司仍在营业。我想创建一个变量,该变量将记录给定时间的公司数量。 (最好是每月变量)

我真的在这里迷路了。请帮忙!

1 个答案:

答案 0 :(得分:1)

下次,请尝试使用dataexssc install dataex)而非屏幕快照,这是recommended in the Stata tag wiki,它将帮助其他人帮助您!

下面是一个示例,该示例如何计算每个时期的活跃公司数量(我将使用年,但指出可以切换到月份的位置)。本示例从Nick Cox's Stata journal article on this topic.

借用

首先,加载数据:

* Example generated by -dataex-. To install: ssc install dataex
clear
input long(firmID dt_start dt_end)
3923155 20080123 99991231
2913168 20070630 99991231
3079566 20000601 20030212
3103920 20020805 20070422
3357723 20041201 20170407
4536020 20120201 20170407
2365954 20070630 20190630
4334271 20110721 20191130
4334338 20110721 20170829
4334431 20110721 20190429
end

请注意,在我的示例数据中,我的日期不是Stata格式,因此我将在这里进行转换:

tostring dt_start, replace
generate startdate=date(dt_start, "YMD") 
tostring dt_end, replace
generate enddate=date(dt_end, "YMD") 
format startdate enddate

接下来,使用您要计算的时间间隔创建一个变量:

generate startyear = year(startdate)
generate endyear = year(enddate)

在我的数据集中,当您将其设为“。”时,我缺少以“ 9999”开头的结束日期。我将这些设置为当年,假设数据集是最新的。您必须确定这是否适合您的数据。

replace endyear = year(date("$S_DATE","DMY")) if endyear == 9999

接下来,对公司生存的头几年和最后几年(或几个月)进行观察:

expand 2
by firmID, sort: generate year = cond(_n == 1, startyear, endyear)
keep firmID year
duplicates drop // keeps one observation for firms that die in the period they were born

现在,展开数据集以对开始日期和结束日期之间的每个时间段进行观察。为此,我使用tsfill

xtset firmID year
tsfill

现在我在每个时期对每个现有公司都有一个观察。剩下的就是按年份计算观察值:

egen entities = count(firmID), by(year)
drop firmID
duplicates drop
相关问题