안녕하세요 구도입니다.
오늘부터는 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
오늘도 글 읽어주셔서 감사합니다.
'IT > 빅데이터분석및시각화' 카테고리의 다른 글
[빅데이터분석및시각화 11] R 텍스트마이닝 03 (0) | 2019.02.03 |
---|---|
[빅데이터분석및시각화 10] R 텍스트마이닝 02 (0) | 2019.01.31 |
[빅데이터분석및시각화 08] R Plot / 수치형 자료를 범주형으로 바꾸기 (0) | 2019.01.16 |
[빅데이터분석및시각화 07] R 상대도수 y축 / 줄기잎그림 / boxplot 등 (0) | 2019.01.09 |
[빅데이터분석및시각화 06] R 히스토그램 그리기 (0) | 2018.12.27 |