IT기술/BigData

Case 5 국가별 인구밀도 분석하기

dobbby 2014. 2. 20. 17:43
반응형

step1. 자료 불러오기

자료출처: 국토연구원 전자도서관 (http://library.krihs.re.kr/statmove.do)


> rm(list=ls())

> setwd("d:/yul/temp")

> d <-read.csv(file = paste("국가별 국토면적 및 인구밀도 비교", ".txt", sep=""), stringsAsFactors = FALSE)

> names(d)

[1] "국명"     "국토면적" "인구밀도"

> dim(d)

[1] 17  3


step 2. 자료 처리하기

> d[order(d$국명),]

          국명  국토면적 인구밀도

11 네 덜 란 드    41,530      392

16 뉴 질 랜 드   267,710       15

3        대 만    36,190      632

7     덴 마 크    43,090      126

9        독 일   357,050      232

5        미 국 9,632,030       31

2   방글라데시   144,000      985

12    스 웨 덴   450,290       20

13    스 위 스    41,280      176

14       영 국   243,610      246

10 이 탈 리 아   301,340      193

4        일 본   377,910      339

17       중 국 9,598,088      140

6     캐 나 다 9,984,670        3

8     프 랑 스   551,500      110

1        한 국    99,828      485

15       호 주 7,741,220        3

> d[order(d$국토면적, decreasing = T), ]

          국명  국토면적 인구밀도

1        한 국    99,828      485

6     캐 나 다 9,984,670        3

5        미 국 9,632,030       31

17       중 국 9,598,088      140

15       호 주 7,741,220        3

8     프 랑 스   551,500      110

12    스 웨 덴   450,290       20

7     덴 마 크    43,090      126

11 네 덜 란 드    41,530      392

13    스 위 스    41,280      176

4        일 본   377,910      339

3        대 만    36,190      632

9        독 일   357,050      232

10 이 탈 리 아   301,340      193

16 뉴 질 랜 드   267,710       15

14       영 국   243,610      246

2   방글라데시   144,000      985

> d$국명

 [1] "한 국"       "방글라데시"  "대 만"       "일 본"       "미 국"      

 [6] "캐 나 다"    "덴 마 크"    "프 랑 스"    "독 일"       "이 탈 리 아"

[11] "네 덜 란 드" "스 웨 덴"    "스 위 스"    "영 국"       "호 주"      

[16] "뉴 질 랜 드" "중 국"      

> gsub(pattern=" ", replacement="", x=d$국명);

 [1] "한국"       "방글라데시" "대만"       "일본"       "미국"      

 [6] "캐나다"     "덴마크"     "프랑스"     "독일"       "이탈리아"  

[11] "네덜란드"   "스웨덴"     "스위스"     "영국"       "호주"      

[16] "뉴질랜드"   "중국"      

> d$국토면적구분 <- ifelse(d$국토면적 > 400000, "그룹A", "그룹B");d

          국명  국토면적 인구밀도 국토면적구분

1        한 국    99,828      485        그룹A

2   방글라데시   144,000      985        그룹B

3        대 만    36,190      632        그룹B

4        일 본   377,910      339        그룹B

5        미 국 9,632,030       31        그룹A

6     캐 나 다 9,984,670        3        그룹A

7     덴 마 크    43,090      126        그룹B

8     프 랑 스   551,500      110        그룹A

9        독 일   357,050      232        그룹B

10 이 탈 리 아   301,340      193        그룹B

11 네 덜 란 드    41,530      392        그룹B

12    스 웨 덴   450,290       20        그룹B

13    스 위 스    41,280      176        그룹B

14       영 국   243,610      246        그룹B

15       호 주 7,741,220        3        그룹A

16 뉴 질 랜 드   267,710       15        그룹B

17       중 국 9,598,088      140        그룹A

> d[d$인구밀도 > 500,]$인구밀도 <- 500


step 3. 그래프 생성 및 저장

> table(d$국토면적구분)


그룹A 그룹B 

    6    11 

> counts <- table(d$국토면적구분);counts


그룹A 그룹B 

    6    11 

> barplot(counts, main="국토면적구분", xlab="국토면적 400,000(㎢) 기준")





> savePlot("human1.png", type="png")


> bp <- barplot(d$인구밀도, names.arg = d$국명, main="국가별 인구밀도", col="lightcyan", cex.names=0.7, las=2)



> savePlot("human2.png",type="png")



> # 1) 히스토그램(hist), 2) 박스플롯(boxplot), 3) 정규성검정그림(qqnorm, qqline), 4) 확률밀도그림(plot(density)) 동시에 출력하기

> eda.shape <- function(input.var, var.name) {

+  dev.new(width=30, height=20)

+  par(oma = c(1,1,2,1), mfrow = c(2,2))

+  hist(input.var, main = "Histogram", xlab = var.name)

+  box("figure", lty="dotted", col="blue")

+  boxplot(input.var, main = "Boxplot")

+  box("figure", lty="dotted", col="blue")

+  qqnorm(input.var)

+  qqline(input.var)

+  box("figure",lty="dotted", col="blue")

+  plot(density(input.var), main="Density Plot")

+  box("figure", lty="dotted", col="blue")

+  box("inner", col="red")

+  mtext(paste("비교분석용그림", "[변수명:", var.name, "]"), side=3, outer=TRUE, cex=0.9)

+ }

> eda.shape(input.var=d$인구밀도, var.name="인구밀도")



> savePlot("human3.png",type="png")



연습문제1. 주어진 서울시 대중교통수단별 이용현황.csv 파일을 사용하여 1월 각 역별 이용현황을 출력하세요.


연습문제1. 주어진 2호선 역별이용인원수.csv 파일을 사용하여 각 연도별 인원수를 출력하세요.








반응형