面板数据中的不活动持续时间变量(Stata)
Inactivity duration variable in panel data (Stata)
我有 U.S 的数据集。过去 30 年的制造业工人,我对以下变量特别感兴趣:
- 第一个制造工作的年月,分别记录并命名为“start_month_job_1”和“start_yr_job_1”。
- 离开第一份制造工作的年月,分别记录并命名为“end_month_job_1”和“end_yr_job_1”。
- 离职原因(如退休、解雇、工厂停工等),命名为“leaving_reason”
- 第二个制造工作的年月,分别记录并命名为“start_month_job_2”和“start_yr_job_2”。
- 离开第二份制造工作的年月,分别记录并命名为“end_month_job_2”和“end_yr_job_2”。
我正在尝试创建一个变量来衡量经济持续时间 inactivity/idleness。我将“经济不活动持续时间”定义为离开第一份工作和开始另一份工作之间的时间差。我已经创建了一个变量,可以在以下年份完成:
gen econ_inactivity_duration_1 = start_yr_job_2 - end_yr_job_1
replace econ_inactivity_1 = 2018 - end_yr_job_1 if missing(start_yr_job_2 ) /// In cases where a worker never starts a second job until 2018, which is the latest year measured in the survey.
但是,我实际上想创建一个 economic_inactivity_duration 变量,它分别考虑开始和离开工作时的月份和年份差异。例如,从 1993 年 5 月到 1993 年 7 月,第 1 行中的工作人员的持续时间为 2 个月,而不是零,这是我上面的代码计算的结果。
dataex start_month_job_1 byte start_yr_job_1 byte end_month_job_1 byte end_yr_job_1 byte start_month_job_2 byte start_yr_job_2 byte end_month_job_2 byte end_yr_job_2 byte leaving_reason
3 1990 5 1993 7 1993 4 1994 "Firm shutdown"
1 2003 7 2015 . . . . "job automation"
98 1979 98 2004 . . . . "Firm shutdown"
98 1975 98 2010 98 2010 98 2015 "job automation"
1 1983 12 1985 1 1986 . . "Firm shutdown"
98 1996 98 1998 . . . . "Firm shutdown"
可能有更好的方法,但这里是一个粗略的方法。
* Data example
input end_month_job_1 end_yr_job_1 start_month_job_2 start_yr_job_2
5 1993 7 1993
end
* Calculate months since 1960
gen j1_end = (end_yr_job_1 - 1960) * 12 + end_month_job_1
gen j2_start = (start_yr_job_2 - 1960) * 12 + start_month_job_2
* Calculate difference
gen wanted = j2_start - j1_end
* Check difference is positive
assert wanted > 0
list
+------------------------------------------------------------------------+
| end_mo~1 end_yr~1 s~mont~2 s~yr_j~2 j1_end j2_start wanted |
|------------------------------------------------------------------------|
1. | 5 1993 7 1993 401 403 2 |
+------------------------------------------------------------------------+
我有 U.S 的数据集。过去 30 年的制造业工人,我对以下变量特别感兴趣:
- 第一个制造工作的年月,分别记录并命名为“start_month_job_1”和“start_yr_job_1”。
- 离开第一份制造工作的年月,分别记录并命名为“end_month_job_1”和“end_yr_job_1”。
- 离职原因(如退休、解雇、工厂停工等),命名为“leaving_reason”
- 第二个制造工作的年月,分别记录并命名为“start_month_job_2”和“start_yr_job_2”。
- 离开第二份制造工作的年月,分别记录并命名为“end_month_job_2”和“end_yr_job_2”。
我正在尝试创建一个变量来衡量经济持续时间 inactivity/idleness。我将“经济不活动持续时间”定义为离开第一份工作和开始另一份工作之间的时间差。我已经创建了一个变量,可以在以下年份完成:
gen econ_inactivity_duration_1 = start_yr_job_2 - end_yr_job_1
replace econ_inactivity_1 = 2018 - end_yr_job_1 if missing(start_yr_job_2 ) /// In cases where a worker never starts a second job until 2018, which is the latest year measured in the survey.
但是,我实际上想创建一个 economic_inactivity_duration 变量,它分别考虑开始和离开工作时的月份和年份差异。例如,从 1993 年 5 月到 1993 年 7 月,第 1 行中的工作人员的持续时间为 2 个月,而不是零,这是我上面的代码计算的结果。
dataex start_month_job_1 byte start_yr_job_1 byte end_month_job_1 byte end_yr_job_1 byte start_month_job_2 byte start_yr_job_2 byte end_month_job_2 byte end_yr_job_2 byte leaving_reason
3 1990 5 1993 7 1993 4 1994 "Firm shutdown"
1 2003 7 2015 . . . . "job automation"
98 1979 98 2004 . . . . "Firm shutdown"
98 1975 98 2010 98 2010 98 2015 "job automation"
1 1983 12 1985 1 1986 . . "Firm shutdown"
98 1996 98 1998 . . . . "Firm shutdown"
可能有更好的方法,但这里是一个粗略的方法。
* Data example
input end_month_job_1 end_yr_job_1 start_month_job_2 start_yr_job_2
5 1993 7 1993
end
* Calculate months since 1960
gen j1_end = (end_yr_job_1 - 1960) * 12 + end_month_job_1
gen j2_start = (start_yr_job_2 - 1960) * 12 + start_month_job_2
* Calculate difference
gen wanted = j2_start - j1_end
* Check difference is positive
assert wanted > 0
list
+------------------------------------------------------------------------+
| end_mo~1 end_yr~1 s~mont~2 s~yr_j~2 j1_end j2_start wanted |
|------------------------------------------------------------------------|
1. | 5 1993 7 1993 401 403 2 |
+------------------------------------------------------------------------+