한국의 생명표 변천

Data

  • 통계청의 excel 자료를 받아서 상당 시간의 작업을 거쳐 저장한 파일임. 1970년부터 매년 기록한 5세 간격 간이 생명표이나 추세를 파악하기에는 충분함.

한국의 간이생명표

library(xlsx)
## Loading required package: rJava
## Loading required package: xlsxjars
lt.kr.70.13 <- read.xlsx("lifetable_kr.xlsx", 1, startRow=3, endRow=24, colIndex=1:133, header=FALSE)
str(lt.kr.70.13)
## 'data.frame':    22 obs. of  133 variables:
##  $ X1  : num  0 1 5 10 15 20 25 30 35 40 ...
##  $ X2  : num  100000 95848 94546 93413 92625 ...
##  $ X3  : num  100000 95811 94493 93303 92465 ...
##  $ X4  : num  100000 95894 94610 93539 92803 ...
##  $ X5  : num  100000 95962 94694 93626 92876 ...
##  $ X6  : num  100000 95925 94641 93517 92720 ...
##  $ X7  : num  100000 96007 94757 93749 93049 ...
##  $ X8  : num  100000 96072 94838 93831 93117 ...
##  $ X9  : num  100000 96036 94785 93724 92966 ...
##  $ X10 : num  100000 96117 94900 93951 93286 ...
##  $ X11 : num  100000 96180 94978 94029 93350 ...
##  $ X12 : num  100000 96144 94926 93924 93202 ...
##  $ X13 : num  100000 96224 95039 94146 93514 ...
##  $ X14 : num  100000 96285 95114 94219 93574 ...
##  $ X15 : num  100000 96249 95063 94117 93430 ...
##  $ X16 : num  100000 96328 95174 94334 93733 ...
##  $ X17 : num  100000 96386 95247 94403 93789 ...
##  $ X18 : num  100000 96351 95196 94303 93650 ...
##  $ X19 : num  100000 96429 95306 94515 93944 ...
##  $ X20 : num  100000 96485 95376 94581 93997 ...
##  $ X21 : num  100000 96450 95326 94483 93861 ...
##  $ X22 : num  100000 96527 95434 94690 94147 ...
##  $ X23 : num  100000 96582 95502 94752 94197 ...
##  $ X24 : num  100000 96547 95452 94656 94065 ...
##  $ X25 : num  100000 96623 95559 94859 94342 ...
##  $ X26 : num  100000 96675 95624 94917 94389 ...
##  $ X27 : num  100000 96641 95575 94824 94261 ...
##  $ X28 : num  100000 96716 95680 95021 94531 ...
##  $ X29 : num  100000 96766 95743 95077 94575 ...
##  $ X30 : num  100000 96732 95694 94985 94450 ...
##  $ X31 : num  100000 96806 95798 95178 94712 ...
##  $ X32 : num  100000 96980 96022 95389 94927 ...
##  $ X33 : num  100000 96955 95985 95312 94815 ...
##  $ X34 : num  100000 97010 96065 95474 95050 ...
##  $ X35 : num  100000 97180 96284 95681 95256 ...
##  $ X36 : num  100000 97162 96257 95618 95156 ...
##  $ X37 : num  100000 97202 96315 95751 95366 ...
##  $ X38 : num  100000 97367 96528 95955 95563 ...
##  $ X39 : num  100000 97356 96510 95905 95474 ...
##  $ X40 : num  100000 97381 96549 96011 95661 ...
##  $ X41 : num  100000 97541 96756 96211 95851 ...
##  $ X42 : num  100000 97536 96747 96172 95772 ...
##  $ X43 : num  100000 97548 96768 96255 95938 ...
##  $ X44 : num  100000 97809 97108 96608 96279 ...
##  $ X45 : num  100000 97776 97062 96530 96160 ...
##  $ X46 : num  100000 97848 97161 96695 96410 ...
##  $ X47 : num  100000 98049 97423 96963 96663 ...
##  $ X48 : num  100000 97993 97347 96854 96513 ...
##  $ X49 : num  100000 98111 97507 97083 96827 ...
##  $ X50 : num  100000 98230 97661 97243 96956 ...
##  $ X51 : num  100000 98176 97588 97134 96810 ...
##  $ X52 : num  100000 98290 97743 97362 97114 ...
##  $ X53 : num  100000 98394 97878 97497 97222 ...
##  $ X54 : num  100000 98342 97807 97389 97082 ...
##  $ X55 : num  100000 98453 97956 97615 97375 ...
##  $ X56 : num  100000 98518 98040 97690 97431 ...
##  $ X57 : num  100000 98460 97962 97571 97274 ...
##  $ X58 : num  100000 98582 98127 97823 97603 ...
##  $ X59 : num  100000 98631 98190 97869 97624 ...
##  $ X60 : num  100000 98570 98107 97740 97454 ...
##  $ X61 : num  100000 98701 98283 98012 97810 ...
##  $ X62 : num  100000 98743 98337 98041 97814 ...
##  $ X63 : num  100000 98674 98244 97903 97637 ...
##  $ X64 : num  100000 98822 98443 98195 98009 ...
##  $ X65 : num  100000 98846 98473 98199 97989 ...
##  $ X66 : num  100000 98770 98371 98055 97807 ...
##  $ X67 : num  100000 98933 98589 98361 98190 ...
##  $ X68 : num  100000 98939 98596 98341 98149 ...
##  $ X69 : num  100000 98872 98506 98212 97984 ...
##  $ X70 : num  100000 99016 98698 98488 98333 ...
##  $ X71 : num  100000 99025 98709 98472 98297 ...
##  $ X72 : num  100000 98966 98630 98355 98148 ...
##  $ X73 : num  100000 99093 98799 98604 98464 ...
##  $ X74 : num  100000 99097 98804 98585 98414 ...
##  $ X75 : num  100000 99049 98737 98481 98279 ...
##  $ X76 : num  100000 99153 98880 98701 98565 ...
##  $ X77 : num  100000 99164 98891 98689 98523 ...
##  $ X78 : num  100000 99125 98836 98597 98400 ...
##  $ X79 : num  100000 99209 98955 98791 98659 ...
##  $ X80 : num  100000 99226 98978 98797 98644 ...
##  $ X81 : num  100000 99195 98930 98716 98534 ...
##  $ X82 : num  100000 99262 99032 98886 98766 ...
##  $ X83 : num  100000 99284 99057 98896 98755 ...
##  $ X84 : num  100000 99259 99016 98825 98658 ...
##  $ X85 : num  100000 99311 99103 98974 98863 ...
##  $ X86 : num  100000 99344 99137 98990 98866 ...
##  $ X87 : num  100000 99326 99104 98932 98785 ...
##  $ X88 : num  100000 99362 99173 99053 98954 ...
##  $ X89 : num  100000 99398 99211 99076 98966 ...
##  $ X90 : num  100000 99387 99184 99029 98900 ...
##  $ X91 : num  100000 99409 99238 99127 99038 ...
##  $ X92 : num  100000 99406 99225 99098 98995 ...
##  $ X93 : num  100000 99373 99177 99031 98912 ...
##  $ X94 : num  100000 99441 99277 99172 99087 ...
##  $ X95 : num  100000 99428 99253 99134 99038 ...
##  $ X96 : num  100000 99379 99188 99051 98942 ...
##  $ X97 : num  100000 99483 99325 99225 99145 ...
##  $ X98 : num  100000 99449 99290 99182 99094 ...
##  $ X99 : num  100000 99403 99233 99109 99010 ...
##   [list output truncated]
gender.yr <- paste(c("A", "M", "F"), rep(1970:2013, each=3), sep=".")
options(width=132)
gender.yr
##   [1] "A.1970" "M.1970" "F.1970" "A.1971" "M.1971" "F.1971" "A.1972" "M.1972" "F.1972" "A.1973" "M.1973" "F.1973" "A.1974" "M.1974"
##  [15] "F.1974" "A.1975" "M.1975" "F.1975" "A.1976" "M.1976" "F.1976" "A.1977" "M.1977" "F.1977" "A.1978" "M.1978" "F.1978" "A.1979"
##  [29] "M.1979" "F.1979" "A.1980" "M.1980" "F.1980" "A.1981" "M.1981" "F.1981" "A.1982" "M.1982" "F.1982" "A.1983" "M.1983" "F.1983"
##  [43] "A.1984" "M.1984" "F.1984" "A.1985" "M.1985" "F.1985" "A.1986" "M.1986" "F.1986" "A.1987" "M.1987" "F.1987" "A.1988" "M.1988"
##  [57] "F.1988" "A.1989" "M.1989" "F.1989" "A.1990" "M.1990" "F.1990" "A.1991" "M.1991" "F.1991" "A.1992" "M.1992" "F.1992" "A.1993"
##  [71] "M.1993" "F.1993" "A.1994" "M.1994" "F.1994" "A.1995" "M.1995" "F.1995" "A.1996" "M.1996" "F.1996" "A.1997" "M.1997" "F.1997"
##  [85] "A.1998" "M.1998" "F.1998" "A.1999" "M.1999" "F.1999" "A.2000" "M.2000" "F.2000" "A.2001" "M.2001" "F.2001" "A.2002" "M.2002"
##  [99] "F.2002" "A.2003" "M.2003" "F.2003" "A.2004" "M.2004" "F.2004" "A.2005" "M.2005" "F.2005" "A.2006" "M.2006" "F.2006" "A.2007"
## [113] "M.2007" "F.2007" "A.2008" "M.2008" "F.2008" "A.2009" "M.2009" "F.2009" "A.2010" "M.2010" "F.2010" "A.2011" "M.2011" "F.2011"
## [127] "A.2012" "M.2012" "F.2012" "A.2013" "M.2013" "F.2013"
names(lt.kr.70.13) <- c("age", gender.yr)
str(lt.kr.70.13)
## 'data.frame':    22 obs. of  133 variables:
##  $ age   : num  0 1 5 10 15 20 25 30 35 40 ...
##  $ A.1970: num  100000 95848 94546 93413 92625 ...
##  $ M.1970: num  100000 95811 94493 93303 92465 ...
##  $ F.1970: num  100000 95894 94610 93539 92803 ...
##  $ A.1971: num  100000 95962 94694 93626 92876 ...
##  $ M.1971: num  100000 95925 94641 93517 92720 ...
##  $ F.1971: num  100000 96007 94757 93749 93049 ...
##  $ A.1972: num  100000 96072 94838 93831 93117 ...
##  $ M.1972: num  100000 96036 94785 93724 92966 ...
##  $ F.1972: num  100000 96117 94900 93951 93286 ...
##  $ A.1973: num  100000 96180 94978 94029 93350 ...
##  $ M.1973: num  100000 96144 94926 93924 93202 ...
##  $ F.1973: num  100000 96224 95039 94146 93514 ...
##  $ A.1974: num  100000 96285 95114 94219 93574 ...
##  $ M.1974: num  100000 96249 95063 94117 93430 ...
##  $ F.1974: num  100000 96328 95174 94334 93733 ...
##  $ A.1975: num  100000 96386 95247 94403 93789 ...
##  $ M.1975: num  100000 96351 95196 94303 93650 ...
##  $ F.1975: num  100000 96429 95306 94515 93944 ...
##  $ A.1976: num  100000 96485 95376 94581 93997 ...
##  $ M.1976: num  100000 96450 95326 94483 93861 ...
##  $ F.1976: num  100000 96527 95434 94690 94147 ...
##  $ A.1977: num  100000 96582 95502 94752 94197 ...
##  $ M.1977: num  100000 96547 95452 94656 94065 ...
##  $ F.1977: num  100000 96623 95559 94859 94342 ...
##  $ A.1978: num  100000 96675 95624 94917 94389 ...
##  $ M.1978: num  100000 96641 95575 94824 94261 ...
##  $ F.1978: num  100000 96716 95680 95021 94531 ...
##  $ A.1979: num  100000 96766 95743 95077 94575 ...
##  $ M.1979: num  100000 96732 95694 94985 94450 ...
##  $ F.1979: num  100000 96806 95798 95178 94712 ...
##  $ A.1980: num  100000 96980 96022 95389 94927 ...
##  $ M.1980: num  100000 96955 95985 95312 94815 ...
##  $ F.1980: num  100000 97010 96065 95474 95050 ...
##  $ A.1981: num  100000 97180 96284 95681 95256 ...
##  $ M.1981: num  100000 97162 96257 95618 95156 ...
##  $ F.1981: num  100000 97202 96315 95751 95366 ...
##  $ A.1982: num  100000 97367 96528 95955 95563 ...
##  $ M.1982: num  100000 97356 96510 95905 95474 ...
##  $ F.1982: num  100000 97381 96549 96011 95661 ...
##  $ A.1983: num  100000 97541 96756 96211 95851 ...
##  $ M.1983: num  100000 97536 96747 96172 95772 ...
##  $ F.1983: num  100000 97548 96768 96255 95938 ...
##  $ A.1984: num  100000 97809 97108 96608 96279 ...
##  $ M.1984: num  100000 97776 97062 96530 96160 ...
##  $ F.1984: num  100000 97848 97161 96695 96410 ...
##  $ A.1985: num  100000 98049 97423 96963 96663 ...
##  $ M.1985: num  100000 97993 97347 96854 96513 ...
##  $ F.1985: num  100000 98111 97507 97083 96827 ...
##  $ A.1986: num  100000 98230 97661 97243 96956 ...
##  $ M.1986: num  100000 98176 97588 97134 96810 ...
##  $ F.1986: num  100000 98290 97743 97362 97114 ...
##  $ A.1987: num  100000 98394 97878 97497 97222 ...
##  $ M.1987: num  100000 98342 97807 97389 97082 ...
##  $ F.1987: num  100000 98453 97956 97615 97375 ...
##  $ A.1988: num  100000 98518 98040 97690 97431 ...
##  $ M.1988: num  100000 98460 97962 97571 97274 ...
##  $ F.1988: num  100000 98582 98127 97823 97603 ...
##  $ A.1989: num  100000 98631 98190 97869 97624 ...
##  $ M.1989: num  100000 98570 98107 97740 97454 ...
##  $ F.1989: num  100000 98701 98283 98012 97810 ...
##  $ A.1990: num  100000 98743 98337 98041 97814 ...
##  $ M.1990: num  100000 98674 98244 97903 97637 ...
##  $ F.1990: num  100000 98822 98443 98195 98009 ...
##  $ A.1991: num  100000 98846 98473 98199 97989 ...
##  $ M.1991: num  100000 98770 98371 98055 97807 ...
##  $ F.1991: num  100000 98933 98589 98361 98190 ...
##  $ A.1992: num  100000 98939 98596 98341 98149 ...
##  $ M.1992: num  100000 98872 98506 98212 97984 ...
##  $ F.1992: num  100000 99016 98698 98488 98333 ...
##  $ A.1993: num  100000 99025 98709 98472 98297 ...
##  $ M.1993: num  100000 98966 98630 98355 98148 ...
##  $ F.1993: num  100000 99093 98799 98604 98464 ...
##  $ A.1994: num  100000 99097 98804 98585 98414 ...
##  $ M.1994: num  100000 99049 98737 98481 98279 ...
##  $ F.1994: num  100000 99153 98880 98701 98565 ...
##  $ A.1995: num  100000 99164 98891 98689 98523 ...
##  $ M.1995: num  100000 99125 98836 98597 98400 ...
##  $ F.1995: num  100000 99209 98955 98791 98659 ...
##  $ A.1996: num  100000 99226 98978 98797 98644 ...
##  $ M.1996: num  100000 99195 98930 98716 98534 ...
##  $ F.1996: num  100000 99262 99032 98886 98766 ...
##  $ A.1997: num  100000 99284 99057 98896 98755 ...
##  $ M.1997: num  100000 99259 99016 98825 98658 ...
##  $ F.1997: num  100000 99311 99103 98974 98863 ...
##  $ A.1998: num  100000 99344 99137 98990 98866 ...
##  $ M.1998: num  100000 99326 99104 98932 98785 ...
##  $ F.1998: num  100000 99362 99173 99053 98954 ...
##  $ A.1999: num  100000 99398 99211 99076 98966 ...
##  $ M.1999: num  100000 99387 99184 99029 98900 ...
##  $ F.1999: num  100000 99409 99238 99127 99038 ...
##  $ A.2000: num  100000 99406 99225 99098 98995 ...
##  $ M.2000: num  100000 99373 99177 99031 98912 ...
##  $ F.2000: num  100000 99441 99277 99172 99087 ...
##  $ A.2001: num  100000 99428 99253 99134 99038 ...
##  $ M.2001: num  100000 99379 99188 99051 98942 ...
##  $ F.2001: num  100000 99483 99325 99225 99145 ...
##  $ A.2002: num  100000 99449 99290 99182 99094 ...
##  $ M.2002: num  100000 99403 99233 99109 99010 ...
##   [list output truncated]

Plot

  • 44년간의 변화를 1970년과 2013년의 생존함수를 그려 비교.
par(family="AppleGothic")
plot(x=lt.kr.70.13$age, y=lt.kr.70.13$A.2013, type="b", ann=FALSE, xaxt="n", yaxt="n")
lines(x=lt.kr.70.13$age, y=lt.kr.70.13$A.1970, type="b")
axis(side=1, at=lt.kr.70.13$age, label=lt.kr.70.13$age)
axis(side=2, at=seq(0, 100000, by=25000), labels=seq(0, 100, by=25))
title(main="1970년과 2013년의 생존함수", xlab="연령", ylab="생존률(%)")
text(x=c(60, 82), y=c(52000, 80000), labels=c(1970, 2013))

  • 기대수명의 차이 표시
    • polygon()에 필요한 좌표 설정
poly.kr.x <- c(lt.kr.70.13$age, rev(lt.kr.70.13$age))
poly.kr.y <- c(lt.kr.70.13$A.1970, rev(lt.kr.70.13$A.2013))
  • 빗금 표시
    • 빨간 색으로 구분
par(family="AppleGothic")
plot(x=lt.kr.70.13$age, y=lt.kr.70.13$A.2013, type="b", ann=FALSE, xaxt="n", yaxt="n")
lines(x=lt.kr.70.13$age, y=lt.kr.70.13$A.1970, type="b")
axis(side=1, at=lt.kr.70.13$age, label=lt.kr.70.13$age)
axis(side=2, at=seq(0, 100000, by=25000), labels=seq(0, 100, by=25))
abline(v = c(0, 100), lty = 2)
title(main="1970년과 2013년의 생존함수", xlab="연령", ylab="생존률(%)")
text(x=c(60, 82), y=c(52000, 80000), labels=c(1970, 2013))
polygon(poly.kr.x, poly.kr.y, angle=45, density=15, col="red")

면적 비교

  • 지난 시간에 만든 area.R() 함수를 이용하기 위하여 dump시킨 것을 도로 source하여 불러 옴.
source("area.R")
options(digits=3)
(s.2013 <- area.R(lt.kr.70.13$age, lt.kr.70.13$A.2013)/100000)
## [1] 81.8
(s.1970 <- area.R(lt.kr.70.13$age, lt.kr.70.13$A.1970)/100000)
## [1] 61.4
s.2013 - s.1970
## [1] 20.4

기대수명의 변화

  • 1970년부터 2013년까지 인구 전체, 남녀별 기대수명을 계산하기 위하여 mapply() 활용. area.R(x, y)에서 x = lt.kr.70.13$age 로 고정시키고, 전체-남-녀 각각의 column index를 추출하여 적용.
    • column index 추출 과정
A.idx <- substr(names(lt.kr.70.13), start=1, stop=1) == "A"
M.idx <- substr(names(lt.kr.70.13), start=1, stop=1) == "M"
F.idx <- substr(names(lt.kr.70.13), start=1, stop=1) == "F"
  • mapply() 적용
    • anonymous function 정의 방식에 유의.
    • 연도별 기대수명 계산
(A.e0 <- mapply(function(y) {area.R(x=lt.kr.70.13$age, y)}, lt.kr.70.13[, A.idx])/100000)
## A.1970 A.1971 A.1972 A.1973 A.1974 A.1975 A.1976 A.1977 A.1978 A.1979 A.1980 A.1981 A.1982 A.1983 A.1984 A.1985 A.1986 A.1987 
##   61.4   61.8   62.2   62.5   62.9   63.2   63.5   63.9   64.2   64.5   65.0   65.4   65.9   66.3   66.9   67.5   68.1   68.7 
## A.1988 A.1989 A.1990 A.1991 A.1992 A.1993 A.1994 A.1995 A.1996 A.1997 A.1998 A.1999 A.2000 A.2001 A.2002 A.2003 A.2004 A.2005 
##   69.2   69.6   70.0   70.4   70.8   72.4   72.7   73.1   73.5   73.9   74.3   75.5   76.0   76.5   77.0   77.4   78.0   78.6 
## A.2006 A.2007 A.2008 A.2009 A.2010 A.2011 A.2012 A.2013 
##   79.1   79.5   80.0   80.5   80.7   81.1   81.4   81.8
(M.e0 <- mapply(function(y) {area.R(x=lt.kr.70.13$age, y)}, lt.kr.70.13[, M.idx])/100000)
## M.1970 M.1971 M.1972 M.1973 M.1974 M.1975 M.1976 M.1977 M.1978 M.1979 M.1980 M.1981 M.1982 M.1983 M.1984 M.1985 M.1986 M.1987 
##   58.5   58.8   59.1   59.4   59.7   60.0   60.2   60.5   60.8   61.0   61.5   62.0   62.4   62.9   63.5   64.0   64.7   65.3 
## M.1988 M.1989 M.1990 M.1991 M.1992 M.1993 M.1994 M.1995 M.1996 M.1997 M.1998 M.1999 M.2000 M.2001 M.2002 M.2003 M.2004 M.2005 
##   65.8   66.2   66.7   67.0   67.5   68.6   69.0   69.3   69.8   70.3   70.8   71.7   72.3   72.8   73.4   73.8   74.5   75.1 
## M.2006 M.2007 M.2008 M.2009 M.2010 M.2011 M.2012 M.2013 
##   75.7   76.1   76.5   77.0   77.2   77.6   77.9   78.5
(F.e0 <- mapply(function(y) {area.R(x=lt.kr.70.13$age, y)}, lt.kr.70.13[, F.idx])/100000)
## F.1970 F.1971 F.1972 F.1973 F.1974 F.1975 F.1976 F.1977 F.1978 F.1979 F.1980 F.1981 F.1982 F.1983 F.1984 F.1985 F.1986 F.1987 
##   64.5   65.0   65.4   65.9   66.3   66.7   67.1   67.4   67.8   68.1   68.6   69.1   69.5   70.0   70.6   71.2   71.7   72.2 
## F.1988 F.1989 F.1990 F.1991 F.1992 F.1993 F.1994 F.1995 F.1996 F.1997 F.1998 F.1999 F.2000 F.2001 F.2002 F.2003 F.2004 F.2005 
##   72.7   73.1   73.5   73.8   74.2   76.1   76.4   76.7   77.1   77.4   77.7   79.2   79.6   80.0   80.4   80.8   81.3   81.8 
## F.2006 F.2007 F.2008 F.2009 F.2010 F.2011 F.2012 F.2013 
##   82.3   82.7   83.2   83.6   83.9   84.3   84.5   84.9

plots

  • plot()lines()로 작성.
plot(1970:2013, A.e0, type="l", ylim=c(50, 90), ann=FALSE)
lines(1970:2013, M.e0, col="blue")
lines(1970:2013, F.e0, col="red")
title(main="기대수명의 변화", xlab="연도", ylab="기대수명(세)")
legend("topleft", inset = 0.1, lty=1, col=c("red", "black", "blue"), legend=c("여자", "전체", "남자"))

ggplot

자료 준비

  • ggplot()에서 사용할 long form 데이터 프레임을 구성하기 위하여 reshape2 패키지를 등록하고 melt() 적용.
    • 비교에 필요한 age, A.1970, A.2013을 별도의 데이터 프레임으로 구성.
(lt.kr.df <- lt.kr.70.13[c("age", "A.1970", "A.2013")])
##    age A.1970 A.2013
## 1    0 100000 100000
## 2    1  95848  99706
## 3    5  94546  99632
## 4   10  93413  99578
## 5   15  92625  99531
## 6   20  91441  99415
## 7   25  89722  99233
## 8   30  88194  98991
## 9   35  86596  98661
## 10  40  84906  98218
## 11  45  82264  97544
## 12  50  78518  96513
## 13  55  73142  94992
## 14  60  65810  92889
## 15  65  56696  89864
## 16  70  45939  85435
## 17  75  34437  78024
## 18  80  21282  66215
## 19  85      0  49212
## 20  90      0  29191
## 21  95      0  12261
## 22 100      0   3149
  • reshape2 패키지를 라이브러리에 등록하고, long form 데이터 프레임으로 변환.
    • melt()의 사용 방법에 유의.
library(reshape2)
(lt.kr.melt <- melt(lt.kr.df, id.vars="age", measure.vars=c("A.1970", "A.2013"), variable.name="years", value.name="lx"))
##    age  years     lx
## 1    0 A.1970 100000
## 2    1 A.1970  95848
## 3    5 A.1970  94546
## 4   10 A.1970  93413
## 5   15 A.1970  92625
## 6   20 A.1970  91441
## 7   25 A.1970  89722
## 8   30 A.1970  88194
## 9   35 A.1970  86596
## 10  40 A.1970  84906
## 11  45 A.1970  82264
## 12  50 A.1970  78518
## 13  55 A.1970  73142
## 14  60 A.1970  65810
## 15  65 A.1970  56696
## 16  70 A.1970  45939
## 17  75 A.1970  34437
## 18  80 A.1970  21282
## 19  85 A.1970      0
## 20  90 A.1970      0
## 21  95 A.1970      0
## 22 100 A.1970      0
## 23   0 A.2013 100000
## 24   1 A.2013  99706
## 25   5 A.2013  99632
## 26  10 A.2013  99578
## 27  15 A.2013  99531
## 28  20 A.2013  99415
## 29  25 A.2013  99233
## 30  30 A.2013  98991
## 31  35 A.2013  98661
## 32  40 A.2013  98218
## 33  45 A.2013  97544
## 34  50 A.2013  96513
## 35  55 A.2013  94992
## 36  60 A.2013  92889
## 37  65 A.2013  89864
## 38  70 A.2013  85435
## 39  75 A.2013  78024
## 40  80 A.2013  66215
## 41  85 A.2013  49212
## 42  90 A.2013  29191
## 43  95 A.2013  12261
## 44 100 A.2013   3149
  • ggplot()으로 1970년의 전체 생존함수와 2013년의 전체 생존함수 비교.
    • geom_point()의 순서를 뒤로 하고, shape=21:22, fill="white"로 설정한 효과는 무엇인가?
library(ggplot2)
(g.kr.1 <- ggplot(lt.kr.melt, aes(x=age, y=lx/1000, colour=years, shape=years)) + geom_line())

(g.kr.2 <- g.kr.1 + geom_point(fill="white"))

(g.kr.3 <- g.kr.2 + scale_shape_manual(values=21:22) + scale_colour_discrete(labels=c("1970", "2013")))

(g.kr.3 <- g.kr.2 + scale_shape_manual(labels=c("1970", "2013"), values=21:22) + scale_colour_discrete(labels=c("1970", "2013")))

plot symbols

  • 기대수명의 차이를 polygon()으로 표시하기 위하여 poly.df를 앞에서 구성한 좌표들로부터 구성.
    • geom_path()geom_point()의 순서가 바뀌면 어떻게 되는지 살펴 볼 것.
poly.df <- data.frame(x=poly.kr.x, y=poly.kr.y)
(p.kr.1 <- ggplot(poly.df, aes(x=x, y=y/1000)) + geom_path())

(p.kr.2 <- p.kr.1 + geom_point(shape=21, fill="white"))

(p.kr.3 <- p.kr.2 + geom_polygon(alpha=0.3, fill="red"))

  • 한글 추가 정보 입력
    • 생존함수의 비교에서
source("theme_kr.R")
theme.kr
## List of 7
##  $ axis.title.x:List of 8
##   ..$ family    : chr "HCR Dotum LVT"
##   ..$ face      : NULL
##   ..$ colour    : NULL
##   ..$ size      : NULL
##   ..$ hjust     : NULL
##   ..$ vjust     : NULL
##   ..$ angle     : NULL
##   ..$ lineheight: NULL
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.title.y:List of 8
##   ..$ family    : chr "HCR Dotum LVT"
##   ..$ face      : NULL
##   ..$ colour    : NULL
##   ..$ size      : NULL
##   ..$ hjust     : NULL
##   ..$ vjust     : NULL
##   ..$ angle     : NULL
##   ..$ lineheight: NULL
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.text.x :List of 8
##   ..$ family    : chr "HCR Dotum LVT"
##   ..$ face      : NULL
##   ..$ colour    : NULL
##   ..$ size      : NULL
##   ..$ hjust     : NULL
##   ..$ vjust     : NULL
##   ..$ angle     : NULL
##   ..$ lineheight: NULL
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ axis.text.y :List of 8
##   ..$ family    : chr "HCR Dotum LVT"
##   ..$ face      : NULL
##   ..$ colour    : NULL
##   ..$ size      : NULL
##   ..$ hjust     : NULL
##   ..$ vjust     : NULL
##   ..$ angle     : NULL
##   ..$ lineheight: NULL
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ plot.title  :List of 8
##   ..$ family    : chr "HCR Dotum LVT"
##   ..$ face      : NULL
##   ..$ colour    : NULL
##   ..$ size      : NULL
##   ..$ hjust     : NULL
##   ..$ vjust     : NULL
##   ..$ angle     : NULL
##   ..$ lineheight: NULL
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ legend.title:List of 8
##   ..$ family    : chr "HCR Dotum LVT"
##   ..$ face      : NULL
##   ..$ colour    : NULL
##   ..$ size      : NULL
##   ..$ hjust     : NULL
##   ..$ vjust     : NULL
##   ..$ angle     : NULL
##   ..$ lineheight: NULL
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  $ legend.text :List of 8
##   ..$ family    : chr "HCR Dotum LVT"
##   ..$ face      : NULL
##   ..$ colour    : NULL
##   ..$ size      : NULL
##   ..$ hjust     : NULL
##   ..$ vjust     : NULL
##   ..$ angle     : NULL
##   ..$ lineheight: NULL
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi FALSE
(g.kr.4 <- g.kr.3 + theme_bw() + theme.kr + xlab("연령") + ylab("생존률(%)") + ggtitle("1970년과 2013년의 전체 생존함수"))

(g.kr.5 <- g.kr.4 + labs(colour="연도", shape="연도"))

(g.kr.6 <- g.kr.5 + theme(legend.position=c(0.85, 0.85)))

  • 한글 추가 정보 입력
    • 기대수명의 차이를 polygon으로 비교하는 경우
(p.kr.4 <- p.kr.3 + theme_bw() + theme.kr + xlab("연령") + ylab("생존률(%)") + ggtitle("1970년과 2013년 기대수명의 차이"))

(p.kr.5 <- p.kr.4 + annotate("text", x = c(55, 63, 80), y = c(60, 75, 85), label=c("1970년", "기대수명의\n 차이", "2013년"), family="HCR Dotum LVT", colour="blue"))

  • 한글 추가 정보 입력
    • 1970년부터 2013년까지 전체 및 남녀별 기대수명의 변화를 ggplot()으로 그리기 위하여 데이터 프레임 구성.
(lt.e0.df <- data.frame(year = 1970:2013, A = A.e0, M = M.e0, F = F.e0))
##        year    A    M    F
## A.1970 1970 61.4 58.5 64.5
## A.1971 1971 61.8 58.8 65.0
## A.1972 1972 62.2 59.1 65.4
## A.1973 1973 62.5 59.4 65.9
## A.1974 1974 62.9 59.7 66.3
## A.1975 1975 63.2 60.0 66.7
## A.1976 1976 63.5 60.2 67.1
## A.1977 1977 63.9 60.5 67.4
## A.1978 1978 64.2 60.8 67.8
## A.1979 1979 64.5 61.0 68.1
## A.1980 1980 65.0 61.5 68.6
## A.1981 1981 65.4 62.0 69.1
## A.1982 1982 65.9 62.4 69.5
## A.1983 1983 66.3 62.9 70.0
## A.1984 1984 66.9 63.5 70.6
## A.1985 1985 67.5 64.0 71.2
## A.1986 1986 68.1 64.7 71.7
## A.1987 1987 68.7 65.3 72.2
## A.1988 1988 69.2 65.8 72.7
## A.1989 1989 69.6 66.2 73.1
## A.1990 1990 70.0 66.7 73.5
## A.1991 1991 70.4 67.0 73.8
## A.1992 1992 70.8 67.5 74.2
## A.1993 1993 72.4 68.6 76.1
## A.1994 1994 72.7 69.0 76.4
## A.1995 1995 73.1 69.3 76.7
## A.1996 1996 73.5 69.8 77.1
## A.1997 1997 73.9 70.3 77.4
## A.1998 1998 74.3 70.8 77.7
## A.1999 1999 75.5 71.7 79.2
## A.2000 2000 76.0 72.3 79.6
## A.2001 2001 76.5 72.8 80.0
## A.2002 2002 77.0 73.4 80.4
## A.2003 2003 77.4 73.8 80.8
## A.2004 2004 78.0 74.5 81.3
## A.2005 2005 78.6 75.1 81.8
## A.2006 2006 79.1 75.7 82.3
## A.2007 2007 79.5 76.1 82.7
## A.2008 2008 80.0 76.5 83.2
## A.2009 2009 80.5 77.0 83.6
## A.2010 2010 80.7 77.2 83.9
## A.2011 2011 81.1 77.6 84.3
## A.2012 2012 81.4 77.9 84.5
## A.2013 2013 81.8 78.5 84.9
(lt.e0.melt <- melt(lt.e0.df, id.vars = "year", measure.vars = c("A", "M", "F"), variable.name="gender", value.name="e0"))
##     year gender   e0
## 1   1970      A 61.4
## 2   1971      A 61.8
## 3   1972      A 62.2
## 4   1973      A 62.5
## 5   1974      A 62.9
## 6   1975      A 63.2
## 7   1976      A 63.5
## 8   1977      A 63.9
## 9   1978      A 64.2
## 10  1979      A 64.5
## 11  1980      A 65.0
## 12  1981      A 65.4
## 13  1982      A 65.9
## 14  1983      A 66.3
## 15  1984      A 66.9
## 16  1985      A 67.5
## 17  1986      A 68.1
## 18  1987      A 68.7
## 19  1988      A 69.2
## 20  1989      A 69.6
## 21  1990      A 70.0
## 22  1991      A 70.4
## 23  1992      A 70.8
## 24  1993      A 72.4
## 25  1994      A 72.7
## 26  1995      A 73.1
## 27  1996      A 73.5
## 28  1997      A 73.9
## 29  1998      A 74.3
## 30  1999      A 75.5
## 31  2000      A 76.0
## 32  2001      A 76.5
## 33  2002      A 77.0
## 34  2003      A 77.4
## 35  2004      A 78.0
## 36  2005      A 78.6
## 37  2006      A 79.1
## 38  2007      A 79.5
## 39  2008      A 80.0
## 40  2009      A 80.5
## 41  2010      A 80.7
## 42  2011      A 81.1
## 43  2012      A 81.4
## 44  2013      A 81.8
## 45  1970      M 58.5
## 46  1971      M 58.8
## 47  1972      M 59.1
## 48  1973      M 59.4
## 49  1974      M 59.7
## 50  1975      M 60.0
## 51  1976      M 60.2
## 52  1977      M 60.5
## 53  1978      M 60.8
## 54  1979      M 61.0
## 55  1980      M 61.5
## 56  1981      M 62.0
## 57  1982      M 62.4
## 58  1983      M 62.9
## 59  1984      M 63.5
## 60  1985      M 64.0
## 61  1986      M 64.7
## 62  1987      M 65.3
## 63  1988      M 65.8
## 64  1989      M 66.2
## 65  1990      M 66.7
## 66  1991      M 67.0
## 67  1992      M 67.5
## 68  1993      M 68.6
## 69  1994      M 69.0
## 70  1995      M 69.3
## 71  1996      M 69.8
## 72  1997      M 70.3
## 73  1998      M 70.8
## 74  1999      M 71.7
## 75  2000      M 72.3
## 76  2001      M 72.8
## 77  2002      M 73.4
## 78  2003      M 73.8
## 79  2004      M 74.5
## 80  2005      M 75.1
## 81  2006      M 75.7
## 82  2007      M 76.1
## 83  2008      M 76.5
## 84  2009      M 77.0
## 85  2010      M 77.2
## 86  2011      M 77.6
## 87  2012      M 77.9
## 88  2013      M 78.5
## 89  1970      F 64.5
## 90  1971      F 65.0
## 91  1972      F 65.4
## 92  1973      F 65.9
## 93  1974      F 66.3
## 94  1975      F 66.7
## 95  1976      F 67.1
## 96  1977      F 67.4
## 97  1978      F 67.8
## 98  1979      F 68.1
## 99  1980      F 68.6
## 100 1981      F 69.1
## 101 1982      F 69.5
## 102 1983      F 70.0
## 103 1984      F 70.6
## 104 1985      F 71.2
## 105 1986      F 71.7
## 106 1987      F 72.2
## 107 1988      F 72.7
## 108 1989      F 73.1
## 109 1990      F 73.5
## 110 1991      F 73.8
## 111 1992      F 74.2
## 112 1993      F 76.1
## 113 1994      F 76.4
## 114 1995      F 76.7
## 115 1996      F 77.1
## 116 1997      F 77.4
## 117 1998      F 77.7
## 118 1999      F 79.2
## 119 2000      F 79.6
## 120 2001      F 80.0
## 121 2002      F 80.4
## 122 2003      F 80.8
## 123 2004      F 81.3
## 124 2005      F 81.8
## 125 2006      F 82.3
## 126 2007      F 82.7
## 127 2008      F 83.2
## 128 2009      F 83.6
## 129 2010      F 83.9
## 130 2011      F 84.3
## 131 2012      F 84.5
## 132 2013      F 84.9
  • 한글 추가 정보 입력
    • ggplot으로 변화 그리기.
(e0.1 <- ggplot(lt.e0.melt, aes(x = year, y = e0, colour = gender)) + theme_bw() + theme.kr + geom_line())

(e0.2 <- e0.1 + ylim(50, 90))

(e0.3 <- e0.2 + xlab("연도") + ylab("기대수명(세)") + ggtitle("1970년~2013년 성별 기대수명의 변화"))

(e0.4 <- e0.3 + labs(colour="성별") + scale_colour_manual(values=c("black", "blue", "red"), labels=c("전체", "남자", "여자")))

(e0.5 <- e0.4 + theme(legend.position = c(0.1, 0.8)))

자료 저장

save.image("lt_kr_0918.rda")