DF <- read.csv("example_population.csv",stringsAsFactors = F)
str(DF)
## 'data.frame': 281 obs. of 7 variables:
## $ City : chr "서울특별시 (1100000000)" "서울특별시 종로구 (1111000000)" "서울특별시 중구 (1114000000)" "서울특별시 용산구 (1117000000)" ...
## $ Population: chr "10,078,850" "155,695" "126,817" "235,186" ...
## $ Households: chr "4,197,478" "72,882" "59,614" "108,138" ...
## $ PersInHou : num 2.4 2.14 2.13 2.17 2.35 2.28 2.26 2.36 2.41 2.36 ...
## $ Male : chr "4,962,774" "76,962" "63,292" "114,119" ...
## $ Female : chr "5,116,076" "78,733" "63,525" "121,067" ...
## $ SexRatio : num 0.97 0.98 1 0.94 0.99 0.97 1.01 1 0.96 0.97 ...
head(DF,5)
## City Population Households PersInHou Male
## 1 서울특별시 (1100000000) 10,078,850 4,197,478 2.40 4,962,774
## 2 서울특별시 종로구 (1111000000) 155,695 72,882 2.14 76,962
## 3 서울특별시 중구 (1114000000) 126,817 59,614 2.13 63,292
## 4 서울특별시 용산구 (1117000000) 235,186 108,138 2.17 114,119
## 5 서울특별시 성동구 (1120000000) 298,145 126,915 2.35 148,265
## Female SexRatio
## 1 5,116,076 0.97
## 2 78,733 0.98
## 3 63,525 1.00
## 4 121,067 0.94
## 5 149,880 0.99
#install.packages("stringr")
library(stringr)
## Warning: package 'stringr' was built under R version 3.3.2
temp = str_split_fixed(DF[,1],"\\(", 2)
head(temp,5)
## [,1] [,2]
## [1,] "서울특별시 " "1100000000)"
## [2,] "서울특별시 종로구 " "1111000000)"
## [3,] "서울특별시 중구 " "1114000000)"
## [4,] "서울특별시 용산구 " "1117000000)"
## [5,] "서울특별시 성동구 " "1120000000)"
#( 를 기준으로 스플릿
NewCity = str_split_fixed( temp[,1], " ",2)
head(NewCity)
## [,1] [,2]
## [1,] "서울특별시" " "
## [2,] "서울특별시" "종로구 "
## [3,] "서울특별시" "중구 "
## [4,] "서울특별시" "용산구 "
## [5,] "서울특별시" "성동구 "
## [6,] "서울특별시" "광진구 "
#공백을 기준으로 시와 구를 구분한다.
colnames(NewCity) <- c("Provinces","City")
head(NewCity)
## Provinces City
## [1,] "서울특별시" " "
## [2,] "서울특별시" "종로구 "
## [3,] "서울특별시" "중구 "
## [4,] "서울특별시" "용산구 "
## [5,] "서울특별시" "성동구 "
## [6,] "서울특별시" "광진구 "
#열이름 지정
DF = data.frame(NewCity,DF[,c(2:7)])
head(DF,3)
## Provinces City Population Households PersInHou Male Female
## 1 서울특별시 10,078,850 4,197,478 2.40 4,962,774 5,116,076
## 2 서울특별시 종로구 155,695 72,882 2.14 76,962 78,733
## 3 서울특별시 중구 126,817 59,614 2.13 63,292 63,525
## SexRatio
## 1 0.97
## 2 0.98
## 3 1.00
#데이터 합ㅋ체
DF[DF == " "] = NA
head(DF,10)
## Provinces City Population Households PersInHou Male
## 1 서울특별시 <NA> 10,078,850 4,197,478 2.40 4,962,774
## 2 서울특별시 종로구 155,695 72,882 2.14 76,962
## 3 서울특별시 중구 126,817 59,614 2.13 63,292
## 4 서울특별시 용산구 235,186 108,138 2.17 114,119
## 5 서울특별시 성동구 298,145 126,915 2.35 148,265
## 6 서울특별시 광진구 362,197 158,769 2.28 177,946
## 7 서울특별시 동대문구 362,604 160,110 2.26 181,825
## 8 서울특별시 중랑구 417,976 177,077 2.36 208,657
## 9 서울특별시 성북구 464,176 192,670 2.41 227,676
## 10 서울특별시 강북구 333,523 141,325 2.36 164,304
## Female SexRatio
## 1 5,116,076 0.97
## 2 78,733 0.98
## 3 63,525 1.00
## 4 121,067 0.94
## 5 149,880 0.99
## 6 184,251 0.97
## 7 180,779 1.01
## 8 209,319 1.00
## 9 236,500 0.96
## 10 169,219 0.97
#공백을 NA로 변경
DF = DF[complete.cases(DF),]
head(DF,10)
## Provinces City Population Households PersInHou Male Female
## 2 서울특별시 종로구 155,695 72,882 2.14 76,962 78,733
## 3 서울특별시 중구 126,817 59,614 2.13 63,292 63,525
## 4 서울특별시 용산구 235,186 108,138 2.17 114,119 121,067
## 5 서울특별시 성동구 298,145 126,915 2.35 148,265 149,880
## 6 서울특별시 광진구 362,197 158,769 2.28 177,946 184,251
## 7 서울특별시 동대문구 362,604 160,110 2.26 181,825 180,779
## 8 서울특별시 중랑구 417,976 177,077 2.36 208,657 209,319
## 9 서울특별시 성북구 464,176 192,670 2.41 227,676 236,500
## 10 서울특별시 강북구 333,523 141,325 2.36 164,304 169,219
## 11 서울특별시 도봉구 353,284 137,260 2.57 174,075 179,209
## SexRatio
## 2 0.98
## 3 1.00
## 4 0.94
## 5 0.99
## 6 0.97
## 7 1.01
## 8 1.00
## 9 0.96
## 10 0.97
## 11 0.97
for(i in 3:8){
DF[,i] = sapply(DF[,i], function(x) gsub(",","",x))
DF[,i] = as.numeric(DF[,i])
}
str(DF)
## 'data.frame': 263 obs. of 8 variables:
## $ Provinces : Factor w/ 17 levels "강원도","경기도",..: 9 9 9 9 9 9 9 9 9 9 ...
## $ City : Factor w/ 241 levels " ","가평군 ",..: 188 189 158 105 32 65 190 106 6 63 ...
## $ Population: num 155695 126817 235186 298145 362197 ...
## $ Households: num 72882 59614 108138 126915 158769 ...
## $ PersInHou : num 2.14 2.13 2.17 2.35 2.28 2.26 2.36 2.41 2.36 2.57 ...
## $ Male : num 76962 63292 114119 148265 177946 ...
## $ Female : num 78733 63525 121067 149880 184251 ...
## $ SexRatio : num 0.98 1 0.94 0.99 0.97 1.01 1 0.96 0.97 0.97 ...
#반복문으로 , 가 포함된 숫자값을 ,을 제거하고 실제 numeric 타입 으로 변경해준다.
ProPopul = tapply(DF$Population,DF$Provinces,sum)
DF[,1] = factor(DF[,1])
ProPopul = tapply(DF$Population,DF$Provinces,sum)
ProPopul
## 강원도 경기도 경상남도 경상북도 광주광역시
## 1547166 18723822 4428762 3215695 1476974
## 대구광역시 대전광역시 부산광역시 서울특별시 울산광역시
## 2491137 1525656 3517491 10078850 1169768
## 인천광역시 전라남도 전라북도 제주특별자치도 충청남도
## 2914271 1902638 2523806 615250 2671383
## 충청북도
## 2414568
#각 도시별로 그룹화하고 sum으로 보여줌.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.3.2
library(ggthemes)
## Warning: package 'ggthemes' was built under R version 3.3.2
Graph = ggplot(DF, aes(x=Provinces , y=Population, fill=Provinces)) +
geom_bar(stat="identity") + theme_wsj()
Graph

write.csv(DF,"example_population_f.csv")