안녕하세요 구도입니다.


오늘부터는 R로 텍스트 마이닝을 하는 방법에 대해 작성하도록 하겠습니다.


작성한 코드만 보고 이해하시지 말고 프로그램에서 직접 실습해보시면서 공부하시면 이해가 훨씬 빠르시답니다.

*실습 파일 다운 방법

1. kostat.go.kr 접속

2. 국내통계 선택

3. 인구.가구 선택

4. 시군구별 이동자수 (1970.01~2018.08) 파일 선택

5. 다운 시(아래와 같이 설정)


6. 다운받고 아래 실습 코드를 바탕으로 실습 진행


*프로그램은 'R x64 3.5.1' 을 사용하였습니다*



#데이터 정의


Sex <- c("M","M","F","F","F","M","M","M","M","F")

Grade <- c(1,2,3,1,2,3,1,2,3,1)

Blood <- c("A","O","B","AB","B","B","AB","A","A","O")

IQ <- c(145,147,135,150,155,135,127,138,140,133)

Hair <- c("Black","Brown","Black","Blond","Red","Brown","Red","Brown","Black","Blond")

Eye <- c("Brown","Blue","Hazel","Green","Brown","Blue","Hazel","Green","Brown","Blue")

d <- data.frame(Sex, Grade, Blood, IQ, Hair, Eye)


str(d)


#도수분포표 작성


table(d$Grade)

table(d$Blood)

table(d$Sex)

table(d$Hair)

table(d$Eye)


table(d$Sex, d$Grade)   #자료 d의 변수 Sex와 Grade의 분할표 작성

table(d$Hair, d$Eye)    #자료 d의 변수 Hair와 Eye의 분할표 작성


table(d$Hair, d$Eye, dnn=c("Hair","Eye"))  #분할표 작성 시 변수명 나타나게 하는 방법


addmargins(table(d$Hair, d$Eye, dnn=c("Hair","Eye")))



prop.table(table(d$Hair, d$Eye, dnn=c("Hair","Eye")))  #분할표 작성 시 도수가 아닌 상대도수로 기입




addmargins(prop.table(table(d$Hair, d$Eye, dnn=c("Hair","Eye"))))  #전체 분할표 작성 시 상대도수에 대한 각 행과 열의 합 표현




#워드클라우드

library(wordcloud)

library(RColorBrewer)  #wordcloud package를 설치하면 자동 설치됨



word <- c("인천광역시", "강화군", "옹진군")  #단어(지역명) 할당

frequency <- c(651,85,61)  # 전입과 전출을 고려한 지역의 순이동 인구수


wordcloud(word, frequency, colors="blue")   #각 지역별 순이동 인구수에 대한 워드 클라우드 출력 & 단어 색 설정


wordcloud(word, frequency, random.order=F, colors="blue") #random.order 옵션은 빈도수가 큰 단어를 중앙에 배치



wordcloud(word, frequency, random.order=F, random.color=F, colors=rainbow(length(word)))



pal2 <- brewer.pal(8,"Dark2")   #8가지 색으로 구성되는 Dark2 팔레트 생성

pal3 <- display.brewer.all(type="all")  #type="div", "qual", "seq"

pal4 <- display.brewer.pal(8,"Dark2")   #8가지 색으로 구성되는 Dark2 팔레트 생성


wordcloud(word, frequency, colors=pal2)   # 단어를 Dark2 팔레트의 색으로 출력  

wordcloud(word, frequency, colors=pal3)   # 단어를 Dark3 팔레트의 색으로 출력 

wordcloud(word, frequency, colors=pal4)   # 단어를 Dark4 팔레트의 색으로 출력 




#워드클라우드2

library(wordcloud)

library(RColorBrewer)  # wordcloud package를 설치하면 자동 설치됨


pal2 <- brewer.pal(8,"Dark2") # 팔레트 생성


data <- read.csv("파일위치//파일명.csv", header=T)

head(data)



#'전국' 지역 통계 삭제

data2 <- data[data$행정구역.시군구.별!="전국",]  # '전국' 지역 제외

head(data2)


# '구' 단위 지역 통계 삭제

x <- grep("구$", data2$행정구역.시군구.별)

x


data3 <- data2[-c(x),] #'구' 단위 지역의 행에 대한 데이터 제외

head(data3)



# 순이동 인구수가 많은 지역 : 전입 인구수 > 전출 인구수

data4 <- data3[data3$순이동.명>0,]   # 순이동 인구수가 0보다 큰 지역 추출

word <- data4$행정구역.시군구.별  # 단어(행정구역) 할당

frequency <- data4$순이동.명  # 빈도수 할당

wordcloud(word, frequency, colors=pal2)  # 워드 클라우드 출력

word

frequency



# 순이동 인구수가 많은 지역 : 전출 인구수 > 전입 인구수

data5 <- data3[data3$순이동.명<0,]   # 순이동 인구수가 0보다 작은 지역 추출

word <- data5$행정구역.시군구.별  # 단어(행정구역) 할당

frequency <- data5$순이동.명  # 빈도수 할당

frequency <- abs(data5$순이동.명)  # 모두 음수값이기 때문에 양수로 변환하여 빈도수 할당

wordcloud(word, frequency, colors=pal2)  # 워드 클라우드 출력

word

frequency


오늘도 글 읽어주셔서 감사합니다.



+ Recent posts