Skip to main content
National Longitudinal Survey of Youth 1979 (NLSY79)

NLSY79 Appendix 29: Date of Interview Current Status Variables

The NLSY79 public release data contains a set of variables for survey years 1980-2020 with information on the respondent's labor force status at each date of interview. These variables are:

DOI_EMPLOYED   DATE OF INTERVIEW STATUS – EMPLOYED
DOI_HOURS_WORKED   DATE OF INTERVIEW STATUS – HOURS WORKED
DOI_RETIRED   DATE OF INTERVIEW STATUS – RETIRED
DOI_DISABLED    DATE OF INTERVIEW STATUS – DISABLED

Below is a description of these variables and the process by which they were constructed.

Variable Description

In survey years 1979-1998 and 2006, the NLSY79 included a heavily used variable called Employment Status Recode (ESR) for each year. These variables represented the respondent's employment status during the survey week and were based on a very specific set of questions that mirrored the actual monthly Current Population Survey. Because ESR can only be computed from those specific questions, it cannot be computed in a strictly equivalent way in survey years in which the CPS section was not fielded as part of the NLSY79.

Many inquiries have been received concerning the missing ESR variables in non-CPS survey years. The Date of Interview Current Status (DOI) variables are intended to help provide a similar concise picture of a respondent's current status on the date of interview. The DOI variables provide a snapshot, capturing whether on the interview date the respondent:

  • was employed (DOI_EMPLOYED)
  • worked more or less than 30 hours per week (DOI_HOURS_WORKED)
  • considered herself/himself retired or reported current retirement status during the course of the survey, regardless of employment status (DOI_RETIRED)
  • considered herself/himself disabled, or reported current disability status in the course of the survey, regardless of employment status (DOI_DISABLED)

Users should note that the working/retired/disabled statuses are not necessarily mutually exclusive within single survey years, or continuous through multiple survey years. For example, a respondent may report that s/he is retired and disabled, but also working in some capacity at a single interview point. Likewise, a respondent who reports herself/himself disabled at one point in time may not be disabled (or provides no evidence of disability) at a later interview date. Similarly, someone who reports retirement at an earlier survey date may be working and not be identified as retired at a later survey date. For instance, respondents who have reported retirement from the military or a civil service/law enforcement position at a relatively early age may go on to a second full-time career and be identified only as employed in later years. An examination of current status variables in multiple years is necessary to determine if a respondent ever identified as retired/disabled, even if their status variables in the most current survey years do not reflect these reports.

Users should note that because the Date of Interview Current Status variables are based on weekly arrays, users may encounter a subset of cases that are assigned an "employed" status in these variables but report that they are "not currently working" in the actual survey.

Variable Creation

DOI_EMPLOYED – DATE OF INTERVIEW STATUS – EMPLOYED
These variables are based on codes in the Work History WEEKLY LABOR STATUS array. If a job number or a code for active military enlistment is present in the array for the week of interview, the respondent is assigned a current status of "1 - working." If the array for that week contains a code for unemployed or out of the labor force, the respondent is assigned a current status of "0 - not working."

DOI_HOURS_WORKED – DATE OF INTERVIEW STATUS – HOURS WORKED
The hours worked are determined from the Work History HOURS WORKED array. Those with 0 hours worked are assigned a -4 code. Respondents who worked between 1-29 hours during the interview week are assigned a code of "0 – less than 30 hours." Respondents who worked 30 or more hours that week are assigned a code of "1 – 30 hours or more."

DOI_RETIRED – DATE OF INTERVIEW STATUS - RETIRED
Current retirement status at the date of each interview was established by using available questions that allow respondents to specifically report retirement in a response category. There are only one or two such question opportunities in the NLSY79 in any given year, and they are not necessarily asked of the entire sample. For later survey years (1994-2020) comments entered during the interview were available for staff. Comments were examined to identify respondents who reported current retired status outside the structure of the proscribed interview questions. Questions used to determine retired status, with examples from 1990, 1998, 2012 and 2018, are:

  • 1990 (QES-23A.##)
  • 1998 (QES-23A.##, ESR_KEY)
  • 2012 (QES-23A.##, RETIRE_EXP_P2_1A)
  • 2018 (QES-23A.##, Q7-19.##, Q7-38)

DOI_DISABLED – DATE OF INTERVIEW STATUS - DISABLED
Similar to retirement status, current disability status at the date of each interview was established by using available questions that allow respondents to specifically report disability/inability to work in a response category. NLSY79 questionnaires offer various opportunities in any given year to report disability, although all are not necessarily asked of the entire sample. Questions used to determine disabled status, with examples from 1990, 2012 and 2018, are:

  • 1990 (QES-23A.##, ESR_KEY, QES-43.##.##, Q7-19.##, Q11-3)
  • 2012 (RETIRE_EXP_P2_1A, QES-23A.##, QES-43.##.##, Q7-19.##, Q11-3)
  • 2018 (QES-23A.##, QES-43.##.##, QES-33.##.##,  Q7-19.##, Q7-38, Q11-3)

As mentioned for the retirement variables above, comments entered during the interview were available to staff for survey years 1994-2020. Comments for these later years were examined to identify respondents who reported current disability status outside the structure of the proscribed interview questions as listed above.

Below is the *.sas code that created the 2020 Date of Interview Current Status variables:

COMPUTE 2020 (ROUND 29) DOI_EMPLOYED

Variable Names in Program          Variable Names in Data Release
CURWK20                                  CURRINT_WK#_2020
STATUS_WK#### (2230-2296)  STATUS_WK_NUM#### (2230-2296)
 
array status   (i)  _1-_2229 status_wk2230-status_wk2295;
 
do i=2230 to 2295; 
     if i=CURWK20 then do;
empstat_wbi=status;
     end;
end;
 
if empstat_wbi>0 & empstat_wbi<=5 then doi_employed=0;
else if empstat_wbi=7 then doi_employed=1;*in military service;
else if empstat_wbi>=2900 then doi_employed=1;
else if empstat_wbi=0 then doi_employed=-3;*no info reported to account for week,;
 
if CURWK20=-4 then doi_employed=-5;
 
COMPUTE 2020 (ROUND 29) DOI_HOURS_WORKED
 
Variable Names in Program           Variable Names in Data Release
CURWK20                                    CURRINT_WK#_2020
HRS_WK#### (2230-2296)         HRS_WORKED_WK_NUM#### (2230-2296)
 
array hrs   (i)  _1-_2229 hrs_wk2230-hrs_wk2295;
 
do i=2230 to 2295; 
   if i=CURWK20 then do;
hrs_doi=hrs;
   end;
end;
 
if doi_employed=0 then doi_hours_worked=-4;
else if doi_employed=1 then do;
   if hrs_doi<0 & hrs_doi>-4 then doi_hours_worked=-3;
   else if hrs_doi>=0 & hrs_doi<30 then doi_hours_worked=0;
   else if hrs_doi>=30 then doi_hours_worked=1;
end;
else if doi_employed=-3 then doi_hours_worked=-3;
else if doi_employed=-5 then doi_hours_worked=-5;
 
 
COMPUTE 2020 (ROUND 29) DOI_RETIRED & DOI_DISABLED
 
Variable Names in Program                           Variable Names in Data Release
CURDATE_D                                                CURDATE~D
CURDATE_M                                                CURDATE~M
CURDATE_Y                                                 CURDATE~Y
QES_B                                                        QES-B
QES_23A_## (1-5)                                     QES-23A.## (1-5)
QES_23A_2_## (1-5)                                  QES-23A_2.## (1-5)
QES_31_##_##_D (job 1-5, gap 1-3)          QES-31.##.##~D (job 1-5, gap 1-3)
QES_31_##_##_M (job 1-5, gap 1-3)          QES-31.##.##~M (job 1-5, gap 1-3)
QES_31_##_##_Y (job 1-5, gap 1-3)          QES-31.##.##~Y (job 1-5, gap 1-3)
QES_33_##_## (job 1-5, gap 1-3)              QES-33.##.## (job 1-5, gap 1-3)
QES_43_##_## (job 1-3, gap 1-3)              QES-43.##.## (job 1-3, gap 1-3)
Q7_11_##_D (1-4)                                     Q7-11.##~D (1-4)
Q7_11_##_M (1-4)                                     Q7-11.##~M (1-4)
Q7_11_##_Y (1-4)                                      Q7-11.##~Y (1-4)
Q7_19_## (1-4)                                         Q7-19.## (1-4)
Q7_38                                                        Q7-38
Q11_3                                                        Q11-3
Q11_4                                                        Q11-4
Q11_5                                                        Q11-5
Q11_5A                                                      Q11-5A
Q11_7                                                        Q11-7
Q11_8_M                                                    Q11-8~M
Q11_8Y_                                                     Q11-8~Y
Q15_9A_1                                                   Q15-9A~000001
Q15_9A_2                                                   Q15-9A~000002
Q15_9A_3                                                   Q15-9A~000003
Q15_9A_4                                                   Q15-9A~000004
Q15_9A_5                                                   Q15-9A~000005
Q15_9A_6                                                   Q15-9A~000006
Q15_9A_7                                                   Q15-9A~000007
RNI                                                             RNI
 
WORK DOI_EMPLOYED
HOURS30 DOI_HOURS_WORKED
EMP_STOP_##_D (1-13) EMPLOYER_STOPDATE.##~D (1-13)
EMP_STOP_##_M (1-13) EMPLOYER_STOPDATE.##~M (1-13)
EMP_STOP_##_Y (1-13) EMPLOYER_STOPDATE.##~Y (1-13)
 
data three;
 set one;
 
 *why leaving a job;
array stopd (*) EMP_STOP_01_D EMP_STOP_02_D EMP_STOP_03_D EMP_STOP_04_D EMP_STOP_05_D;
array stopm (*) EMP_STOP_01_M EMP_STOP_02_M EMP_STOP_03_M EMP_STOP_04_M EMP_STOP_05_M;
array stopy (*) EMP_STOP_01_Y EMP_STOP_02_Y EMP_STOP_03_Y EMP_STOP_04_Y EMP_STOP_05_Y;
array qes23a (*)  qes_23a_01 qes_23a_02 qes_23a_03 qes_23a_04 qes_23a_05;
 *within job gap;
array qes31d (*)  QES_31_01_01_D QES_31_01_02_D QES_31_01_03_D
QES_31_02_01_D QES_31_02_02_D QES_31_02_03_D
QES_31_03_01_D QES_31_03_02_D QES_31_03_03_D
QES_31_04_01_D QES_31_04_02_D QES_31_04_03_D
QES_31_05_01_D ES_31_05_02_D dum;
array qes31m (*) QES_31_01_01_M QES_31_01_02_M QES_31_01_03_M
QES_31_02_01_M QES_31_02_02_M QES_31_02_03_M
QES_31_03_01_M QES_31_03_02_M QES_31_03_03_M
QES_31_04_01_M QES_31_04_02_M QES_31_04_03_M
QES_31_05_01_M QES_31_05_02_M dum;
array qes31y (*) QES_31_01_01_Y QES_31_01_02_Y QES_31_01_03_Y
QES_31_02_01_Y QES_31_02_02_Y QES_31_02_03_Y
QES_31_03_01_Y QES_31_03_02_Y QES_31_03_03_Y
QES_31_04_01_Y QES_31_04_02_Y QES_31_04_03_Y
QES_31_05_01_Y QES_31_05_02_Y dum;
array qes33 (*)  QES_33_01_01 QES_33_01_02 QES_33_01_03
QES_33_02_01 QES_33_02_02 QES_33_02_03
QES_33_03_01 QES_33_03_02 QES_33_03_03
QES_33_04_01 QES_33_04_02 QES_33_04_03
QES_33_05_01 QES_33_05_02 dum;
array qes43     (*)  qes_43_01_01 qes_43_01_02 qes_43_01_03
                     qes_43_02_01 qes_43_02_02 qes_43_03_03
                     qes_43_03_01 qes_43_03_02 qes_43_03_03
                     dum dum dum
dum dum dum;
*between job gaps;
array q711d (*) Q7_11_01_D Q7_11_02_D Q7_11_03_D Q7_11_04_D;
array q711m (*) Q7_11_01_M Q7_11_02_M Q7_11_03_M Q7_11_04_M;
array q711y (*) Q7_11_01_Y Q7_11_02_Y Q7_11_03_Y Q7_11_04_Y;
array q719  (*)  q7_19_01 q7_19_02 q7_19_03 q7_19_04;
 
***** retire or not at interview date;
if qes_23a_01=-5 then qes23aR=-5;
else do;
 qes23aR = 0;
 q719R=0; q719R3=0; 
 do i = 1 to dim(qes23a);
  if (qes23a(i) = 17) then qes23aR = (qes23aR + 1);
 end;
 do i = 1 to dim(q719);
  if q719(i) = 13 & (qes_b in (0 -4) or (q711d(i)=curdate_d & q711m(i)=curdate_m & q711y(i)=curdate_y)) then q719R = (q719R + 1);
 end;
 if q719R=0 then do i = 1 to dim(q719);
  if q719(i) = 13 & (q711d(i)  in (-1 -2 -3) or q711m(i) in (-1 -2 -3) or q711y(i) in (-1 -2 -3)) then q719R3 = (q719R3 + 1);
 end; 
end;
 
if qes_23a_01=-5 then retire=-5;
else do;
 retire=0;
 if (q7_38 = 5) then do; retire = 1; flag_r0=1; end;
 else if qes23aR > 0 then do; retire = 1; flag_r1=1; end;
 else if q719R>0 then do;   retire = 1; flag_r2=1; end; 
 else if q719R3>0 then do;  retire = 1; flag_r23=1; end;
end; 
 
***** disabled or not at interview date;
if qes_23a_01=-5 then do;
 qes23aD=-5;
 qes43D=-5;
 q719D=-5;
 q113D=-5;
end;
else do;
 qes23aD=0; qes23aD3=0;
 qes43D=0; qes43D3=0;
 q719D=0; q719D3=0;
 q113D=0;
 
 do i = 1 to dim(qes23a);
  if work=0 & qes23a(i) = 10 & ( (0<stopy(i) &  stopy(i)<curdate_y) or (stopy(i)=curdate_y & 0<stopm(i) & stopm(i)<curdate_m)
     or (stopy(i)=curdate_y & stopm(i)=curdate_m & 0<stopd(i) & stopd(i)<curdate_d))  then qes23aD = qes23aD + 1;
 end;
 if qes23aD=0 then do i = 1 to dim(qes23a);
  if work=0 & qes23a(i) = 10 & (stopy(i) in (-1 -2 -3) or stopm(i) in (-1 -2 -3) or stopd(i) in (-1 -2 -3)) then qes23aD3= qes23aD3+1;
 end;
 
 do i = 1 to dim(qes43);
  if (qes43(i) = 2 or qes33(i)=9) & (qes31d(i)=curdate_d & qes31m(i)=curdate_m & qes31y(i)=curdate_y) then qes43D = (qes43D + 1);
 end;
 if qes43D=0 then do i = 1 to dim(qes43);
  if (qes43(i) = 2 or qes33(i)=9) & (qes31d(i) in (-1 -2 -3) or qes31m(i) in (-1 -2 -3) or qes31y(i) in (-1 -2 -3)) & work=0 then qes43D3=qes43D3 + 1;
 end;
 
 do i = 1 to dim(q719);
  if q719(i) = 9 & (qes_b in (0 -4) or (q711d(i)=curdate_d & q711m(i)=curdate_m & q711y(i)=curdate_y)) then q719D = (q719D + 1);
 end;
 if q719D=0 then do i = 1 to dim(q719);
  if q719(i) = 9 & (q711d(i)  in (-1 -2 -3) or q711m(i) in (-1 -2 -3) or q711y(i) in (-1 -2 -3)) then q719D3 = (q719D3 + 1);
 end; 
 
 if q11_3=1 then q113D=1;
end;
 
if qes_23a_01=-5 then disable=-5;
else do;
 disable=0;
 if (q7_38 = 4) then do; disable = 1; flag_d0=1; end;
 else if qes23aD>0 then do; disable=1; flag_d1=1; end;
 else if qes43D>0 then do;  disable=1; flag_d2=1; end;
 else if q719D>0 then do;   disable=1; flag_d3=1; end;
 else if q113D>0 then do;   disable=1; flag_d4=1; end;
 else if qes23aD3>0 then do; disable=1; flag_d13=1; end;
 else if qes43D3>0 then do;  disable=1; flag_d23=1; end;
 else if q719D3>0 then do;   disable=1; flag_d33=1; end;
end;