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)
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
#tail(region)
#View(region)
#dim(region)
#str(region)
#summary(region)
#최종학력
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)
#변수 검토
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
#변수 검토
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
#변수 검토
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 ®ion$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
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 세종특별자치시
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).
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%입니다. 고등소재지는 다양하게 분포되어 있으나, 대학소재지가 경기도에 분포되어 있는 것도 볼 수 있었습니다. 비록 많은 데이터양은 아니지만 고등학교 출신 소재지와 관계없이 수도권으로 많이 이동하고 있고, 특히 전라남도와 경상남도에서 경기도로의 이동이 많은 것을 볼 수 있습니다.