ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [R] 3. R 실전 예제 Part 2
    CSE/R 2015. 7. 13. 20:06

    Chapter 2. R 실전 예제 (Continue)

     앞의 예제를 통해 R이 비정형 데이터로 워드 클라우드를 만들었습니다. 워드 클라우드빈도 수, 수치 값을 정확히 알 수가 없는 단점이 있습니다. 그래서 이번엔 그래프 형식의 결과물을 내보도록 하겠습니다.




     1. R을 실행하여 작업 디렉토리를 설정합니다.


      setwd("c:\\r_temp")


     



     




      

     2. 필요한 패키지를 설치하도록 합니다.


      install.packages("stringr")
      library(stringr)
      library(KoNLP)
      library(wordcloud)
      useSejongDic()



     3. 분석할 원본 자료를 변수에 불러들여서 명사만 분리합니다.


      txt <- readLines("exo_data.txt")

      word <- sapply(txt, extractNoun, USE.NAMES=F)


     


     4. 단어 수가 짧은 키워드는 제외시키겠습니다.


      c <- unlist(word)

      word <- Filter(function(x) {nchar(x) >= 2}, c)




     5. 의미없는 단어나 숫자, 기호 등을 제거합니다.


      res <- str_replace_all(word, "[^[:alpha:]]", "") #영문, 한글 아닌것 전부제거

      res <- res[res !=""] #공백 제거

      res <- gsub("category", "", res)

     

      이하 생략..

      

      NROW(res)










     6. 최종적으로 걸러낸 파일을 저장하여서 집계합니다.

      write(res, "exo_filtered2.txt")
      res2 <- read.table("exo_filtered2.txt")
      wordcount <- table(res2)
      head(sort(wordcount, decreasing=T), 30)







     7. 가장 상위10개만 골라서 PIE 차트로 출력합니다

      top10 <- head(sort(wordcount, decreasing=T), 10)
      pie(top10)
      savePlot("word_top.png", type="png")







     













     8. 위 그림은 너무 허접해보이므로 색깔을 알록달록 꾸며보겠습니다.


      pie(top10, col=rainbow(10), radius=1)

      savePlot("word_top2.png", type="png")








     9. 위 차트들의 수치가 나오지 않아서 정확하지 않아보입니다. 수치를 나타낸 도넛 차트로 나타내겠습니다.

      pct <- round(top10/sum(top10) * 100, 1)
      lab <- paste(names(top10), "\n", pct, "%")
      pie(top10, main="내 블로그 인기 키워드 TOP 10", col=rainbow(10),cex=0.8, labels=lab)
      par(new=T)
      pie(top10, radius=0.6, col="white", labels=NA, border=NA)
      savePlot("word_top3.png", type="png")







     10. 다음은 바 형태의 차트로 표시해 보겠습니다.

      bchart <- head(sort(wordcount, decreasing=T), 10)
      bplot <- barplot(bchart, main="내 블로그 인기 키워드 TOP 10", col=rainbow(10), cex.names=0.7, las = 2, ylim=c(0, 70))
      pct <- round(bchart/sum(bchart) * 100, 1)
      text(x = bplot, y = bchart * 1.05, labels = paste("(", pct, "%", ")"), col = "black", cex = 0.7)
      text(x = bplot, y = bchart * 0.95, labels = paste(bchart, "건"), col = "black", cex = 0.7)
      savePlot("word_top4.png", type="png")









     비정형 데이터를 차트화하는 예제를 진행해 보았습니다.


     다음 장에서는 정형 데이터에 대한 분석을 진행하겠습니다.








    * 이 포스트는 서적 'R라뷰: R을 활용한 데이터 분석 입문편'을 참고하여 작성한 포스트입니다.

    'CSE > R' 카테고리의 다른 글

    [R] 2. R 실전 예제 Part 1  (0) 2015.07.13
    [R] 1. R 설치 및 구동  (0) 2015.07.13

    댓글

Designed by Tistory.