Case 5 국가별 인구밀도 분석하기
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 파일을 사용하여 각 연도별 인원수를 출력하세요.