안녕하세요

모두를 위한 R 데이터 분석 입문 연습문제 10장 본문

Study_exam/모두를 위한 R 데이터 분석 입문 연습문제

모두를 위한 R 데이터 분석 입문 연습문제 10장

godxxy1229 2023. 6. 15. 06:30
# KoNLP 설치 
install.packages("multilinguer")
library(multilinguer)
install_jdk()
install.packages(c('stringr', 'hash', 'tau', 'Sejong', 'RSQLite', 'devtools'), type = "binary")
install.packages("remotes")
remotes::install_github('haven-jeon/KoNLP', upgrade = "never", 
   							         INSTALL_opts=c("--no-multiarch"))
library(KoNLP)
library(wordcloud)
library(RColorBrewer)
# 아래 코드를 실행하면 저의 경우 오류가 와장창 납니다. 
# 그래도 혹시 모르니 실행해두세요.
buildDictionary(ext_dic = "woorimalsam")

 

 

01 20대 국회 개원 여야 3당 대표 국회연설문에 대해 각각 워드클라우드를 작성하시오.
예제 소스 파일은 'ex_10-1.txt','ex_10-2.txt', 'ex_10-3.txt'이다.

 

pal = brewer.pal(8, "Accent")
Sys.setlocale("LC_ALL", "korean")
# utf-8 하면 안됩니다. -.-; 대문자로 해야합니다.
text1 <- readLines('./source/Ch10/ex_10-1.txt', encoding = 'UTF-8')
text2 <- readLines('./source/Ch10/ex_10-2.txt', encoding = 'UTF-8')
text3 <- readLines('./source/Ch10/ex_10-3.txt', encoding = 'UTF-8')
texts <- list('1' = text1, '2' = text2, '3' = text3)
for (text in texts) {
  noun <- sapply(text, extractNoun, USE.NAMES = F)
  noun2 <- unlist(noun)
  wordcount <- table(noun2)
  wordcloud(names(wordcount), freq = wordcount, scale = c(6.0, 1.0), min.freq = 5,
           random.order = FALSE, random.color = TRUE, rot.per = .2, colors = pal)
}


02 스티브 잡스의 스탠포드 대학 졸업식 연설문에 대해 워드클라우드를 작성하시오.

예제 소스 파일은 'ex_10-4.txt'이다.

 

pal = brewer.pal(11, "Paired")
text <- readLines('./source/Ch10/ex_10-4.txt', encoding = 'UTF-8')
noun <- sapply(text, extractNoun, USE.NAMES = F)
noun2 <- unlist(noun)
wordcount <- table(noun2)
wordcloud(names(wordcount), freq = wordcount, scale = c(5.5, 1.0), min.freq = 3,
                         random.order = FALSE, random.color = TRUE,  rot.per = .2, colors = pal)


03 오바마 대통령의 대통령 당선 연설문에 대해 워드클라우드를 작성하시오.
예제 소스 파일은 'ex_10-5.txt'이다.

 

pal = brewer.pal(10, "Set3")
text <- readLines('./source/Ch10/ex_10-5.txt', encoding = 'UTF-8')
noun <- sapply(text, extractNoun, USE.NAMES = F)
noun2 <- unlist(noun)
wordcount <- table(noun2)
wordcloud(names(wordcount), freq = wordcount, scale = c(5.5, 1.0), min.freq = 2,
                          random.order = FALSE, random.color = TRUE,  rot.per = .1, colors = pal)


04 네이버 데이터랩에서 주제어를 '캠핑'과 '텐트'로 하여 최근 1년 간의 검색 트렌드를 확인하되, 25세 이상과 30대 소비자를 대상으로 남성과 여성을 각각 구분하고, 그래프에서 어떤 차이가 발견되는지 설명하시오.

 

# 두 성별 모두 텐트 자체에 대해서는 비슷한 높은 흥미를 보였으나
# 남자는 여성에 비해 캠핑에 대한 검색률이 더 낮은 것으로 나타났다.
# 여성은 남성보다는 비교적 텐트라는 그 물건 자체보다는 캠핑 이라는 행동에 더 목적에 두고 있다


20 05 네이버 데이터랩의 지역통계 메뉴에서 서울 종로구와 강원도 태백시에 대해 인기 업종을 '관광'으로 하여 최근 1년간 검색 트렌드를 비교하시오. 그리고 종로구와 태백시의 그래프에서 어떤 차이가 발견되는지 관찰하시오.

 

# 태백시는 종로구에 비해 관광 업종에 대한 관심이 훨씬 활발하다는 것을 확인할 수 있다.


06 네이버 데이터랩의 지역통계 메뉴의 카드 사용통계에서 '반려동물'에 대해 서울시와 대전시의 최근 1년간 카드사용 추이를 비교하시오. 그래프에서 어떤 차이가 발견되는지 설명하시오.

 

# 서울시는 강남구 외에는 전체적으로 낮은 반려동물에 대한 카드 사용률을 보여줬는데
# 대전시는 전체적으로 높은 사용률을 보여줬으며 일부는 강남구보다도 높은 수치를 보여주고 있다.


07 공공데이터포털에서 서울시 서대문구의 유치원 현황(2014년 9월) 자료를 다운로드하여 유치원의 위치를 지도상에 마커로 표시하시오. (유치원 주소를 위도와 경도로 변환하지 못하는 곳도 있는데, 이곳은 마커 표시 대상에서 제외한다.)

 

library(ggmap)
register_google(key = "구글 api 키를 이곳에")
myds <- read.csv(file = "./source/Ch10/유치원_현황.csv")
names <- myds$"유.치.원.명"
gc <- geocode(enc2utf8(myds$"소.재.지"))
cen <- c(mean(gc$lon), mean(gc$lat))
df = data.frame(name = names, lon = gc$lon, lat = gc$lat)
map <- get_googlemap(center = cen, maptype = "roadmap", zoom = 13, markers = gc)
gmap <- ggmap(map)
gmap + geom_text(data = df, aes(x = lon, y = lat), size = 5, label = df$name, col = "blue")

 

08 공공데이터포털에서 '2016년도 시도 시군구별 교통사고' 통계를 다운로드하시오. 다운로드한 파일중에서 '2016년_시도_시군구별_월별_교통사고.csv'에 대해 다음 물음에 답하시오.
(1) 월별 발생건수, 사망자수, 부상자수를 집계하여 출력하시오.
(2) 시도별 발생건수, 사망자수, 부상자수를 집계하여 출력하시오.

 

#마찬가지로 source 폴더에 있습니다
myds <- read.csv(file = "./source/Ch10/2016년_시도_시군구별_월별_교통사고.csv")
#(1)
aggregate(x = myds[, -c(1,2,3)], by = list("월" = myds$"월"), FUN = sum)
#(2)
aggregate(x = myds[, -c(1,2,3)], by = list("시도" = myds$"시도"), FUN = sum)


09 국가통계포털 사이트에서 '2016년도 전국 음식점 정보 통계'를 가져와서 '채식전문점'이 위치한 시도를 출력하시오.

 

#마찬가지로 source 폴더에 있습니다
myds <- read.csv(file = "./source/Ch10/한국관광공사_전국_음식점_정보_20160906.csv")
unique(myds[myds[,"카테고리3"] == "채식전문점", "시군구명"])