본문으로 바로가기

연구제안 및 문의하기

함께하는 KLIPS, 소통하는 KLIPS, 열린 KLIPS

FAQ

임금근로자의 근로시간변수에 결측치가 너무 많이 나온다면?

  • Date2016.02.03
  • Hit3,663
이는 노동패널의 근로시간 변수를 제대로 구성하지 못했기 때문에 발생한 실수이다. 주로 "p191004 : (주된일자리)주당 평균 근무시간(임금)" 변수만을 이용하였을 때 이런 현상이 나타난다.

노동패널에서는 유형설문을 통해 주당 근로시간을 조사한다. 유형설문에서의 근로시간 관련 항목은 임금근로자일 경우와 비임금근로자일 경우 각각 질문 형태가 다르다. 임금근로자의 경우

① 정규근로시간이 정해져 있는지,
② 정해져 있지 않을 경우 식사시간을 제외하고 일주일에 평균 몇 시간 일했는지
③ 정해져 있을 경우 정규근로시간이 식사시간을 제외하고 일주일에 몇 시간인지, 정규근로시간 이외에 초과로 근로하는 시간이 있었는지, 있었다면 일주일 평균 몇 시간이나 되는지를 질문하는 방식으로 구성되어 있다.

비임금근로자일 경우 한 문항으로 간단하게 일주일에 몇 시간이나 일하는지 질문한다. 아래는 임금근로자의 근로시간 변수 생성방법 예제이다.


*===========================;
* SAS 근로시간 변수 생성 ;
*===========================;

data p19; set a.klips19p;

/*변수설명
p191003 : 주된일자리 정규근로시간 여부 y/n = 1/2
p191004 : 주된일자리 주당 평균 근로시간
p191006 : 주된일자리 주당 정규 근로시간

p191011 : 주된일자리 초과근로여부 y/n = 2/1
p191012 : 주된일자리 주당 평균 초과근로시간*/

array w[3] p191004 p191006 p191012; /*결측치 처리*/
do i=1 to 3;
if w[i] =-1 then w[i]=.;
end;

if p191003=2 then worktime=p191004;/*평균근로시간*/
if p191003=1 and p191011=1 then worktime=p191006;
if p191003=1 and p191011=2 then worktime=sum(of p191006, p191012); /*정규+초과근로시간*/

/*불가능한 초과근로시간 확인*/
proc freq; table p191004 p191006 p191012;
proc print; where p191012>168; var pid p191012;
run;

data hours; set p19(keep=worktime); /*근로시간 변수 그래프*/
proc chart data=hours; vbar worktime; title 'Hours worked per week';
run;


*===========================.
* SPSS 근로시간 변수 생성 .
*===========================.

get file='D:\19차\users guide\19차년도\klips19p.sav'.

recode p191004 p191006 p191012(-1=sysmis).
if (p191003=2) worktime=p191004.
if (p191003=1 and p191011=1) worktime=p191006.
if (p191003=1 and p191011=2) worktime=sum(p191006, p191012).

GRAPH /HISTOGRAM=worktime.

/*불가능한 초과근로시간 확인*/
select if (p191012>168).
list pid p191012.


/*======================================*/
/* stata 근로시간변수 생성 */
/*======================================*/

clear
use klips19p, clear

recode p191004 p191006 p191012(-1=.)
egen worktime=rowtotal(p191006 p191012) if p191003==1 & p191011==2
replace worktime=p191004 if p191003==2
replace worktime=p191006 if p191003==1 & p191011==1

histogram worktime

/*불가능한 초과근로시간 확인*/

keep if p191012>168
tab pid p191012

*==============================================#
* R 근로시간변수 생성 #
*==============================================#
p19 ← read.spss(file = "C:\\Users\\KLI\\DATA\\1-19spss\\klips19p.sav", use.value.labels = FALSE, to.data.frame = TRUE )

#변수 설명
#p191003 : 주된일자리 정규근로시간 여부 y/n = 1/2
#p191004 : 주된일자리 주당 평균 근로 시간
#p191006 : 주된일자리 주당 정규 근로 시간
#p191011 : 주된일자리 초과근로여부 y/n =2/1
#p191012 : 주된일자리 주당 평균 초과근로시간

#결측치 처리
p19$p191004[p19$p191004 == (-1)] ← NA
p19$p191006[p19$p191006 == (-1)] ← NA
p19$p191012[p19$p191012 == (-1)] ← NA

#평균 근로 시간
sum ← data.frame(p19$p191006, p19$p191012)
rowtotal ← rowSums(sum, na.rm=TRUE) #변수 활용을 위해 합을 구함

worktime ← ifelse(p19$p191003 ==2 , p19$p191004,
ifelse((p19$p191003 ==1 & p19$p191011 == 1), p19$p191006,
ifelse((p19$p191003 ==1 & p19$p191011 ==2), rowtotal, NA)))

summary(worktime)
hist(worktime) #worktime 히스토그램

#불가능한 초과근로시간 확인
over ← filter(p19, p191012 > 168) #없음.
over ← p19[p19$p191012 > 168, c("pid","p191012")] #pid 까지 확인하고 싶은 경우.
table(over)


<한국노동패널 1~19차년도 조사자료 User's Guide 192p Q24 참고>

스크랩