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]
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
mapply()
활용. area.R(x, y)
에서 x = lt.kr.70.13$age
로 고정시키고, 전체-남-녀 각각의 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()
적용
(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
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()
에서 사용할 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")))
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"))
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")