2020년 복지패널데이터 분석 20181091 정현아

고등학교 출신소재지가 대학소재지에 영향을 미칠까?

1. 패키지 로딩

library(foreign)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(readxl)

1-2 데이터불러오기

original_region <- read.spss(file= "Koweps_p15_2020_beta1.sav",
                              to.data.frame=T)
## Warning in read.spss(file = "Koweps_p15_2020_beta1.sav", to.data.frame = T):
## Koweps_p15_2020_beta1.sav: Compression bias (0) is not the usual value of 100
region<- original_region

1-3 데이터 검토

#tail(region)
#View(region)
#dim(region)
#str(region)
#summary(region)

1-3.1 데이터 탐색

최종학력 응답 종류
  1. 중학교 졸업 이하
  2. 고등학교 중퇴, 졸업
  3. 전문대학 재학, 중퇴, 졸업
  4. 대학교(4년제) 재학, 중퇴, 졸업
  5. 대학원 이상
#최종학력
head(region$p1507_3aq1,10)#응답 중에서 3,4,5번의 답들만 필요
##  [1] NA NA NA NA NA NA NA NA NA NA
#고등학교소재지
head(region$p1507_3aq4,10)
##  [1] NA NA NA NA NA NA NA NA NA NA
#대학소재지
head(region$p1507_3aq7,10)
##  [1] NA NA NA NA NA NA NA NA NA NA
#이름 수정
region <- rename(region,
                 education = p1507_3aq1, #최종학력
                 highschool = p1507_3aq4, #고등학교소재지
                 college = p1507_3aq7)  #대학소재지

#이름 잘 바뀌었는지 확인
#head(region$education)
#head(region$highschool)
#head(region$college)

2 변수검토 및 결측처리

2-1 education

#변수 검토
class(region$education)
## [1] "numeric"
table(region$education) #무응답=9
## 
##   1   2   3   4   5 
##  12  62  41 112   5
#이상치 결측처리
region$education <- ifelse(region$education == 9, NA, region$education)
#결측치 확인
summary(region$education)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   2.000   4.000   3.155   4.000   5.000   11225
table(is.na(region$education))
## 
## FALSE  TRUE 
##   232 11225

2-2 highschool

#변수 검토
class(region$highschool)
## [1] "numeric"
table(region$highschool) #무응답=99999
## 
## 11050 11070 11080 11090 11100 11110 11120 11130 11150 11160 11170 11200 11210 
##     4     1     4     2     1     3     2     1     2     1     4     1     3 
## 11220 11230 11240 11250 21010 21030 21060 21070 21090 21130 21150 22020 22050 
##     2     2     1     1     1     1     2     1     2     1     1     1     2 
## 22060 22070 23010 23040 23050 23060 23080 24010 24020 24030 24040 24050 25010 
##     1     2     2     5     2     1     2     3     1     3     3     3     1 
## 25020 25030 25040 25050 26020 26030 26310 31013 31021 31022 31023 31030 31041 
##     2     3     1     2     2     3     2     2     1     1     6     2     2 
## 31042 31050 31052 31070 31080 31091 31092 31140 31191 31192 31193 31200 31210 
##     1     1     3     2     1     3     5     1     2     1     1     1     1 
## 31230 31240 32020 32030 32330 33030 33040 33042 33043 33330 34011 34020 34340 
##     1     2     2     1     1     3     1     2     3     1     1     3     1 
## 34360 34370 34380 35011 35012 35020 35030 35040 35060 35360 35380 36000 36010 
##     1     1     1     2     1     3     4     2     2     1     1     1     2 
## 36020 36030 36040 36060 36380 36400 36410 36440 36460 37012 37030 37060 37100 
##     1     2     5     1     2     1     1     2     2     2     1     1     3 
## 37350 37390 37410 38030 38070 38080 38100 38111 38114 38115 38360 38400 39010 
##     2     1     1     3     1     1     1     1     2     1     1     1     4
#이상치 결측처리
summary(region$highschool)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   11050   23040   31052   27743   35030   39010   11241
region$highschool <- ifelse(region$highschool == 99999, NA, region$highschool)
#결측치 확인
table(is.na(region$highschool))
## 
## FALSE  TRUE 
##   216 11241

2-3 college

#변수 검토
class(region$college)
## [1] "numeric"
table(region$college) #무응답=99999
## 
## 11010 11020 11040 11050 11060 11070 11080 11110 11130 11140 11190 11200 11210 
##     1     1     2     3     3     1     2     2     2     3     1     3     2 
## 11230 21040 21050 21070 21080 21100 21110 21130 22020 22040 22050 22070 23020 
##     2     2     2     2     1     1     1     1     1     2     1     2     1 
## 23030 23040 24010 24020 24040 24050 25010 25030 25040 26020 26030 31012 31021 
##     2     1     4     1     3     2     4     1     5     2     1     1     1 
## 31022 31030 31040 31041 31042 31091 31092 31101 31140 31150 31190 31191 31192 
##     1     2     1     2     1     5     1     1     1     1     1     3     2 
## 31220 31240 31250 31260 31270 32010 32020 32030 33030 33042 34010 34011 34012 
##     4     1     2     1     1     2     1     1     1     3     1     4     1 
## 34020 34050 34080 34370 35011 35012 35020 35030 35310 36000 36010 36030 36040 
##     1     1     1     1     2     1     3     2     2     1     2     2     3 
## 37040 37050 37060 37100 38030 38070 38111 38113 38114 39010 
##     2     2     1     1     2     1     1     2     1     2
#이상치 결측처리
region$college <- ifelse(region$college == 99999, NA, region$college)
#결측치 확인
summary(region$college)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   11010   22030   31041   26769   34011   39010   11302
table(is.na(region$college))
## 
## FALSE  TRUE 
##   155 11302

education에서 3,4,5 응답을 한 사람의 “highschool 소재지”와과 “college 소재지”응답을 “educationr”이라는 이름으로 추출함. subset이라는 함수는 원래있던 데이터셋에서 ’추출’을 하기 때문에 부분집합이다.

educationr <- subset(region, subset = region$education >= 3 &region$education <= 5, select=c("highschool", "college"))
summary(educationr) #지역에 대한 응답 정리
##    highschool       college     
##  Min.   :11050   Min.   :11010  
##  1st Qu.:23040   1st Qu.:22030  
##  Median :31042   Median :31041  
##  Mean   :27859   Mean   :26769  
##  3rd Qu.:35050   3rd Qu.:34011  
##  Max.   :39010   Max.   :39010  
##  NA's   :3       NA's   :3
head(educationr)
##     highschool college
## 120      11050   31250
## 147      11050   11020
## 201      11100   11110
## 214      11170   31091
## 248      11050   31030
## 341      11080   31260
count(educationr) #총 158개의 응답
##     n
## 1 158
head(region$education, 120)
##   [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
##  [26] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
##  [51] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
##  [76] NA NA NA NA NA NA NA  2 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [101] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA  3

3 출신학교 소재지 목록 불러오기

library(readxl)
list_region <- read_excel("(2020년 15차 한국복지패널조사) 조사설계서-가구원용(beta1).xlsx", col_names=T, sheet=2)
dim(list_region)
## [1] 20  2
head(list_region)
## # A tibble: 6 x 2
##    code metro     
##   <dbl> <chr>     
## 1    11 서울특별시
## 2    21 부산광역시
## 3    22 대구광역시
## 4    23 인천광역시
## 5    24 광주광역시
## 6    25 대전광역시
list_region #highschool과 college 모두 max가 39010이기 때문에 39(16개)까지만 지정
## # A tibble: 20 x 2
##     code metro         
##    <dbl> <chr>         
##  1    11 서울특별시    
##  2    21 부산광역시    
##  3    22 대구광역시    
##  4    23 인천광역시    
##  5    24 광주광역시    
##  6    25 대전광역시    
##  7    26 울산광역시    
##  8    31 경기도        
##  9    32 강원도        
## 10    33 충청북도      
## 11    34 충청남도      
## 12    35 전라북도      
## 13    36 전라남도      
## 14    37 경상북도      
## 15    38 경상남도      
## 16    39 제주도        
## 17    40 검정고시      
## 18    41 북한          
## 19    42 외국          
## 20    43 세종특별자치시

3-1 highschool 고등학교 소재지의 분포 & 분포그래프

excel에서 기초작업진행 후 파일 부르기

high_code <- read_excel("15차 머지데이터_변수명.xlsx", col_names=T, sheet=2)
head(high_code)
## # A tibble: 6 x 5
##   `highschool college`  highschool_extra~ college_extract code  college_list_co~
##   <chr>                 <chr>             <chr>           <chr> <chr>           
## 1 120        11050   3~ 11050             31250           11    31              
## 2 147        11050   1~ 11050             11020           11    11              
## 3 201        11100   1~ 11100             11110           11    11              
## 4 214        11170   3~ 11170             31091           11    31              
## 5 248        11050   3~ 11050             31030           11    31              
## 6 341        11080   3~ 11080             31260           11    31
high_code <- high_code %>%  
    mutate(code = as.numeric(code))
high_code<- left_join(high_code, list_region, id = "code")
## Joining, by = "code"
head(high_code)
## # A tibble: 6 x 6
##   `highschool col~ highschool_extr~ college_extract  code college_list_co~ metro
##   <chr>            <chr>            <chr>           <dbl> <chr>            <chr>
## 1 120        1105~ 11050            31250              11 31               서울특별~
## 2 147        1105~ 11050            11020              11 11               서울특별~
## 3 201        1110~ 11100            11110              11 11               서울특별~
## 4 214        1117~ 11170            31091              11 31               서울특별~
## 5 248        1105~ 11050            31030              11 31               서울특별~
## 6 341        1108~ 11080            31260              11 31               서울특별~
ggplot(data = high_code, aes(x=code, y=metro))+
  geom_col()
## Warning: Removed 3 rows containing missing values (position_stack).

3-2 college 대학 소재지의 분포 & 분포그래프

마찬가지로 excel에서 기초작업진행 후 파일 부르기

college_code <- read_excel("15차 머지데이터_변수명.xlsx", col_names=T, sheet=3)
head(college_code)
## # A tibble: 6 x 5
##   `highschool college`    highschool_extra~ college_extract high_list_code code 
##   <chr>                   <chr>             <chr>           <chr>          <chr>
## 1 120        11050   312~ 11050             31250           11             31   
## 2 147        11050   110~ 11050             11020           11             11   
## 3 201        11100   111~ 11100             11110           11             11   
## 4 214        11170   310~ 11170             31091           11             31   
## 5 248        11050   310~ 11050             31030           11             31   
## 6 341        11080   312~ 11080             31260           11             31
college_code <- college_code %>%  
    mutate(code = as.numeric(code))
college_code<- left_join(college_code, list_region, id = "code")
## Joining, by = "code"
head(college_code)
## # A tibble: 6 x 6
##   `highschool colle~ highschool_extr~ college_extract high_list_code  code metro
##   <chr>              <chr>            <chr>           <chr>          <dbl> <chr>
## 1 120        11050 ~ 11050            31250           11                31 경기도~
## 2 147        11050 ~ 11050            11020           11                11 서울특별~
## 3 201        11100 ~ 11100            11110           11                11 서울특별~
## 4 214        11170 ~ 11170            31091           11                31 경기도~
## 5 248        11050 ~ 11050            31030           11                31 경기도~
## 6 341        11080 ~ 11080            31260           11                31 경기도~
ggplot(data = college_code, aes(x=code, y=metro))+
  geom_col()
## Warning: Removed 3 rows containing missing values (position_stack).

고등소재지와 대학소재지가일치하는 경우는 42.4%이고, 일치하지 않는 경우는 57.6%입니다. 고등소재지는 다양하게 분포되어 있으나, 대학소재지가 경기도에 분포되어 있는 것도 볼 수 있었습니다. 비록 많은 데이터양은 아니지만 고등학교 출신 소재지와 관계없이 수도권으로 많이 이동하고 있고, 특히 전라남도와 경상남도에서 경기도로의 이동이 많은 것을 볼 수 있습니다.