안녕하세요 구도입니다.


오늘도 지난 시간에 이어 텍스트마이닝 실습을 진행해보는 시간을 갖도록 하겠습니다.


프로그램 실행하셔서 직접 실습해보시며 이해하시는 것이 가장 효과적이랍니다.


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



#데이터 정의

library(tm)


sentences1<-c("These are 4 sentences.",

 "So they are text data.",

 "They are not structured but unstructured.",

 "We will study pre-processing in text mining with them.") # 네 개의 문장을 벡터 형태로 읽어 들여 이들을 sentences1에 저장

sentences1


sentCorpus<-Corpus(VectorSource(sentences1))   # 문자열로 만들어진 벡터 자료 sentences1 을 sentCorpus라는 corpus로 저장

sentCorpus                                     # sentCorpus를 치면 sentCorpus의 메타정보만 주고 corpus의 내용을 볼 수 없음



inspect(sentCorpus)  # 전처리 결과 확인을 위한 함수.inspect() 함수를 사용해도 내용은 볼 수 없다. 



lapply(sentCorpus,as.character) # v0.6-2에서 corpus의 내용을 보기 위해서는 corpus를 as.character() 함수를 이용하여 문자형으로 바꿔주어야 함

                                # lapply() 함수는 어떤 함수를 적용시킨 결과를 리스트 형태로 나타내줌

                                # sentCorpus 에 as.character() 함수가 적용되어 각 문서가 리스트 형태로 출력된 것을 확인할 수 있음



library(SnowballC)



sentCorpus<-tm_map(sentCorpus,stemDocument)

inspect(sentCorpus)

lapply(sentCorpus,as.character)



paste(c("east", "west", "south", "north"), collapse=" ")


split=strsplit("abcde", "c")



sentCorpus <- tm_map(sentCorpus, gsub, pattern="studi", replacement="study")

inspect(sentCorpus)



#termDocumentmatrix 생성

sentences1<-c("These are 4 sentences.",

 "So they are text data.",

 "They are not structured but unstructured.",

 "We will study pre-processing in text mining with them.")

sentences1


sentCorpus<-Corpus(VectorSource(sentences1))   

sentCorpus                                     


inspect(sentCorpus) 



lapply(sentCorpus,as.character) 


sentTdm<-TermDocumentMatrix(sentCorpus,control=list(minWordLength=1))

sentTdm


inspect(sentTdm)


m <- as.matrix(sentTdm)  ##TermDocumentMatrix() 함수의 결과는 sentTdm을 보통의 행렬 형태로 바꾸기 위해

                           as.matrix() 함수가 필요

m



inspect(sentTdm[1:3,2:3])  ## 행렬의 일부 보기. 1~3번째 단어와 2~3번째 문서를 확인할 수 있다.


inspect(sentTdm[c("data","text"),]) ##특정 관심 단어들의 단어-문서 행렬도 확인 가능. “data”와“text”를 포함한 단어-문서 행렬을 확인



findFreqTerms(sentTdm,lowfreq=2)  ##빈도가 어느 정도 이상인 단어들만을 고르려 할 경우 사용하는 함수. 빈도가 2이상인 단어 고르기


findAssocs(sentTdm, "text", corlimit=0.5)


freq<-rowSums(as.matrix(sentTdm))

barplot(freq)


barplot(freq, las=2)



par(mfrow=c(1,2))

barplot(freq, las=2)

pie(freq)


findAssocs(sentTdm,'text',0.5)



library(wordcloud)

par(bg="black")

set.seed(1)  ## word cloud가 돌릴 때마다 같은 결과가 나올 수 있도록 set.seed() 를 지정함

Freq<-sort(freq,decreasing=T)

wordcloud(words=names(Freq),freq=Freq,

random.order=F,colors=brewer.pal(12,"Set3"),min.freq=1)




#crude예제 풀어보기

library(tm)

data(crude)  ## 로이터Reuter 뉴스 기사 중 원유와 관련된 기사 20개가 저장된 데이터

summary(crude)   ##코퍼스의 요약 정보를 보여줌

inspect(crude[1])



sentCorpus<-Corpus(VectorSource(crude))   # 문자열로 만들어진 벡터 자료 sentences1 을 sentCorpus라는 corpus로 저장

sentCorpus                                     # sentCorpus를 치면 sentCorpus의 메타정보만 주고 corpus의 내용을 볼 수 없음



inspect(sentCorpus)


crudeCorpus<-tm_map(crude,content_transformer(tolower))

crudeCorpus<-tm_map(crudeCorpus,stripWhitespace)

crudeCorpus<-tm_map(crudeCorpus,removePunctuation)

crudeCorpus<-tm_map(crudeCorpus,removeNumbers)

crudeStopwords<-c(stopwords('english'),"reuter","will","also","said","one","last")

crudeCorpus<-tm_map(crudeCorpus,removeWords,crudeStopwords)

crudeCorpusCopy<-crudeCorpus

crudeCorpus<-tm_map(crudeCorpus,stemDocument)

crudeTdm<-TermDocumentMatrix(crudeCorpus,control=list(minWordLength=1))

crudeTdm


inspect(crudeTdm)


crudeMat<-as.matrix(crudeTdm)

crudeFreq<-sort(rowSums(crudeMat),decreasing=T)

d <- data.frame(word = names(crudeFreq),freq=crudeFreq)##crude에 대한 2차원 배열을 생성하고, 이것에 대한 데이터 d를 생성



library(wordcloud)

par(bg="black")

set.seed(1)

wordcloud(words=names(crudeFreq),freq=crudeFreq,random.order=F,colors=brewer.pal(12,"Set3"),min.freq=5)


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

안녕하세요 구도입니다.


오늘도 지난 시간에 이어 텍스트마이닝 실습을 진행해보는 시간을 갖도록 하겠습니다.


프로그램 실행하셔서 직접 실습해보시며 이해하시는 것이 가장 효과적이랍니다.


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


#데이터 정의

library(tm)


sentences1<-c("These are 4 sentences.",

 "So they are text data.",

 "They are not structured but unstructured.",

 "We will study pre-processing in text mining with them.") # 네 개의 문장을 벡터 형태로 읽어 들여 이들을 sentences1에 저장


sentences1


sentCorpus<-Corpus(VectorSource(sentences1))   # 문자열로 만들어진 벡터 자료 sentences1 을 sentCorpus라는 corpus로 저장

sentCorpus                                                  # sentCorpus를 치면 sentCorpus의 메타정보만 주고 corpus의 내용을 볼 수 없음


#전처리 변환

inspect(sentCorpus)  # 전처리 결과 확인을 위한 함수.inspect() 함수를 사용해도 내용은 볼 수 없다. 



lapply(sentCorpus,as.character) # v0.6-2에서 corpus의 내용을 보기 위해서는 corpus를 as.character() 함수를 이용하여 문자형으로 바꿔주어야 함

                                # lapply() 함수는 어떤 함수를 적용시킨 결과를 리스트 형태로 나타내줌

                                # sentCorpus 에 as.character() 함수가 적용되어 각 문서가 리스트 형태로 출력된 것을 확인할 수 있음


writeCorpus(sentCorpus)   # sentCorpus에 있는 네 개의 문장을 작업 디렉터리에 네 개의 텍스트 파일로 각각 저장해줌



sentCorpus<-tm_map(sentCorpus,tolower)


inspect(sentCorpus)


sentCorpus<-tm_map(sentCorpus,content_transformer(tolower))

sentCorpus<-tm_map(sentCorpus,stripWhitespace)

sentCorpus<-tm_map(sentCorpus,removePunctuation)

sentCorpus<-tm_map(sentCorpus,removeNumbers)


lapply(sentCorpus,as.character)


stopwords('english') #R에서 가지고 있는 불용어 list


sentStopwords<-c(stopwords('english'),"will")

sentStopwords


sentStopwords<-setdiff(sentStopwords,c("from"))

sentStopwords


sentCorpus<-tm_map(sentCorpus,removeWords,sentStopwords)

lapply(sentCorpus,as.character)


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


안녕하세요 구도입니다.


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


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


#기본 세팅

library(KoNLP)   # 한글 처리 패키지 로딩

library(wordcloud)

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


useSejongDic()   # 한글 '세종사전'로딩


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


text <- readLines("C://Users//user//Desktop//2018학년//2학기//빅데이터 분석 및 시각화-서울//수업자료//20181024, 29//speech.txt")      # 연설문 파일 읽기

text


noun <- sapply(text, extractNoun, USE.NAMES=F)

noun # 각 행별로 추출된 명사 확인


class(noun)


noun2 <- unlist(noun)    # 추출된 명사 통합

noun2   # 통합된 명사 확인



word_count <- table(noun2)     #단어별 빈도수 계산

word_count


head(word_count,10)

head(sort(word_count, decreasing=T), 10)  #단어 빈도를 내림차순으로 정렬해서 상위 10개 보기


wordcloud(names(word_count), freq=word_count, scale=c(6,0.3), min.freq=3, random.order=F, colors=pal2)

wordcloud(names(word_count), freq=word_count, scale=c(10,1), min.freq=3, random.order=F, colors=pal2)


windowsFonts(malgun=windowsFont("맑은 고딕"))

windowsFonts(malgun=windowsFont("궁서체"))


wordcloud(names(word_count), freq=word_count, scale=c(6,0.3), min.freq=3, random.order=F, colors=pal2)

wordcloud(names(word_count), freq=word_count, scale=c(10,1), min.freq=3, random.order=F, colors=pal2, family="malgun")



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


안녕하세요 구도입니다.


오늘부터는 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

안녕하세요 구도입니다.


오늘은 Plot 그래프 그리기, scatter plot 그리기, 수치형 자료를 범주형으로 바꾸는 방법에 대해 알아 보는 시간을 가지도록 하겠습니다.


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


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


install.packages("graphics")

library(graphics)


#다양한 type으로 plot 그래프 그리기

data(women)

women


weight <- women$weight  #women 데이터 세트의 weight를 weight값으로 할당

plot(weight)  #weight 값의 그래프


height <- women$height   #women 데이터 세트의 height를 height값으로 할당

plot(height, weight, xlab="키", ylab="몸무게")  #height(x)에 따른 weight(y)의 그래프



par(mfrow=c(2,3))

plot(height, weight, xlab="키", ylab="몸무게", type="p")  # type옵션은 그래프 출력 모양의 유형 type=p는 점으로 표현

plot(height, weight, xlab="키", ylab="몸무게", type="l")  # type=l은 선으로 표현

plot(height, weight, xlab="키", ylab="몸무게", type="b")  # type=b는 점과 선으로 표현

plot(height, weight, xlab="키", ylab="몸무게", type="c")  # type=c는 b의 선으로 표현

plot(height, weight, xlab="키", ylab="몸무게", type="o")  # type=o는 점 위의 선으로 표현

plot(height, weight, xlab="키", ylab="몸무게", type="h")  # type=h는 각 값의 높이에 해당하는 수직선으로 표현



par(mfrow=c(2,2))

plot(height, weight, xlab="키", ylab="몸무게", type="s")  # type=s는 계단형으로 표현

plot(height, weight, xlab="키", ylab="몸무게", type="S")  # type=S는 계단형으로 표현

plot(height, weight, xlab="키", ylab="몸무게", type="n")  # type=n은 나타나지 않음




plot(height, weight, xlab="키", ylab="몸무게", type="l", lty=1, lwd=1)

  #lty는 선의 유형을 결정함 1~6정도 변경 가능. lwd는 선의 굵기로 디폴트는 1이며 2로 지정하면 두배가 됨


par(mfrow=c(2,3))

plot(height, weight, xlab="키", ylab="몸무게", type="l", lty=1)

plot(height, weight, xlab="키", ylab="몸무게", type="l", lty=2)

plot(height, weight, xlab="키", ylab="몸무게", type="l", lty=3)

plot(height, weight, xlab="키", ylab="몸무게", type="l", lty=4)

plot(height, weight, xlab="키", ylab="몸무게", type="l", lty=5)

plot(height, weight, xlab="키", ylab="몸무게", type="l", lty=6)


par(mfrow=c(1,2))

plot(height, weight, xlab="키", ylab="몸무게", type="l", lty=1, lwd=1)

plot(height, weight, xlab="키", ylab="몸무게", type="l", lty=1, lwd=2)



#플로팅 문자 다양하게 변화주며 scatter plot 그리기


plot(height, weight, xlab="키", ylab="몸무게")


plot(height, weight, xlab="키", ylab="몸무게", pch=0) #pch(plotting character)옵션은 0~25까지 숫자옵션 가능. 0~20까지는 col옵션만 지정하면 되고 21~25까지는

                                                       col옵션(문자의 경계선 색)과 bg옵션(문자의 내부 색) 같이 지정


par(mfrow=c(2,2))

plot(height, weight, xlab="키", ylab="몸무게", pch=0, col="blue")

plot(height, weight, xlab="키", ylab="몸무게", pch=0, col="blue", cex=1.5) #cex(character expansion)옵션은 문자의 크기. 디폴트는 1이며 1.5는 50% 더 크게, 0.5는 50% 더 작게 나타남

plot(height, weight, xlab="키", ylab="몸무게", pch=0, col="blue", cex=0.5)




par(mfrow=c(2,2))

plot(height, weight, xlab="키", ylab="몸무게", pch=21, col="blue", bg="yellow")

plot(height, weight, xlab="키", ylab="몸무게", pch=21, col="blue", bg="yellow", cex=2)

plot(height, weight, xlab="키", ylab="몸무게", pch=21, col="blue", bg="yellow", cex=0.7)


par(mfrow=c(1,2))

plot(height, weight, xlab="키", ylab="몸무게", pch="@")

plot(height, weight, xlab="키", ylab="몸무게", pch="A")




#수치 자료를 범주형 자료 변환하기

Sals = c(12, 0.4, 5, 2, 50, 8, 3, 1, 4, 0.25)  #자료의 입력

max(Sals)

min(Sals)

Seps=cut(Sals, breaks=c(0,1,5,max(Sals)))   #분류할 범위 정함

Seps

table(Seps)  # 표 구성

levels(Seps)=c("저소득", "일반", "고소득")   #수준의 이름 부여 변경

Seps    #변경된 값 확인

table(Seps)   #변경된 이름으로 표 구성


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


'IT > 빅데이터분석및시각화' 카테고리의 다른 글

[빅데이터분석및시각화 10] R 텍스트마이닝 02  (0) 2019.01.31
[빅데이터분석및시각화 09] R 텍스트마이닝 01  (0) 2019.01.26
[빅데이터분석및시각화 07] R 상대도수 y축 / 줄기잎그림 / boxplot 등  (0) 2019.01.09
[빅데이터분석및시각화 06] R 히스토그램 그리기  (0) 2018.12.27
[빅데이터분석및시각화 05] R pie3D / barplot 함수  (0) 2018.12.24

안녕하세요 구도입니다.


오늘은 R 히스토그램에서 y축을 상대도수로 하는 법, 줄기-잎 그림 그리는 법, 박스플롯, 히스토그램과 상자그림을 동시에 그리는 방법에 대해 배워보도록 하겠습니다.


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


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



# 배열 만들기

height1 <- c(4,18,5,8)  #그룹 1값 할당

height2 <- c(9,15,20,6) #그룹 2값 할당


height <- rbind(height1, height2)

height


name <- c("영업 1팀", "영업 2팀", "영업 3팀", "영업 4팀")   # 그룹 이름 할당

legend_lb1 <- c("2014년", "2015년")  # 범례 라벨 만들기


height_1 <- cbind(height1, height2)  # 배열 만들기

height_1


par(mfrow=c(1,2))

barplot(height_1, main="연도별 팀 영업 실적", names.arg=legend_lb1, xlab="연도", ylab="영업 실적(억 원)", col=c("darkblue", "red", "yellow", "green"), 

  legend.text=name, beside=T, ylim=c(0,25), args.legend=list(x='top'))  

barplot(height_1, main="연도별 팀 영업 실적", names.arg=legend_lb1, xlab="연도", ylab="영업 실적(억 원)", col=c("darkblue", "red", "yellow", "green"), 

  legend.text=name, beside=F, args.legend=list(x='topleft') )  




# 히스토그램에서 상대도수를 y축으로 하는 방법

a <- hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", breaks=seq(4,6.5,by=0.5),freq=FALSE)  

a

a$density   # 원래 히스토그램의 density값

a$density=a$counts / sum(a$counts)  # 내가 지정한 값을 히스토그램의 density값으로 변경

a$density

a


par(mfrow=c(1,3))

plot(a,freq=T)

plot(a,freq=F) #freq=F이면 각 계급구간(a$breaks)에 대해 확률밀도(a$density)로 크기를 출력함

plot(a,freq=F, ylab="상대도수")



# 줄기-잎 그림


stem(mag)


Scores1 <- c(2,3,16,23,14,12,4,1,2,0,0,0,6,28,31,14,4,8,2,5)

Scores1


Scores=scan()

2 3 16 23 14 12 4 1 2 0 0 0 6 28 31 14 4 8 2 5   #scan()는 숫자로 이루어진 자료를 직접 입력하는데 유용한 함수. 

                                                 # 자료를 입력한 후 더 이상 입력할 자룍 없을 때 Enter키 누름

Scores


stem(Scores)

stem(Scores, scale=2)  #줄기를 10단위가 아닌 크기를 반으로 줄인 5단위로 하고 싶을때 scale 옵션 이용


# 박스플롯

library(graphics)


data(quakes)  # 지진 강도의 데이터 세트 불러오기

quakes



?quakes #해당자료 quakes에 대한 자세한 설명 볼 수 있음


head(quakes)  # 자료의 상위 일부만 나타낼 때 사용. 


str(quakes)   #str()를 이용하여 자료 및 변수들의 유형 확인. num=숫자형(실수), Factor=인자형, chr=문자형, int=숫자형(정수)


mag <- quakes$mag    # 지진의 강도에 대한 벡터 데이터 할당

mag     # 지진의 강도 출력


min(mag)               # method 1. 기술통계량 구하는 방법

max(mag)

median(mag)

quantile(mag, c(0.25,0.5,0.75))  # 25, 50, 75 백분위수

summary(mag)           # method 2. 기술통계량 구하는 방법

var(mag)

sd(mag)

IQR(mag)


sort(mag)  #디폴트는 올림차순

sort(mag, decreasing=T)  #내림차순 할 때


boxplot(mag)



# 색깔 지정

par(mfrow=c(1,2))

boxplot(mag)

boxplot(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", col="red")



# 수직 vs 수평

par(mfrow=c(1,2))

boxplot(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", col="red")

boxplot(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", col="red", horizontal=T)


# box 모양

par(mfrow=c(1,2))

boxplot(mag)

boxplot(mag, notch=T)


# y축 변경

par(mfrow=c(1,2))

boxplot(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", col="red")

boxplot(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", col="red", ylim = c(3.5,7))


# 상자그림의 폭을 조정(boxwex)

par(mfrow=c(1,2))

boxplot(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", col="red", boxwex=0.25)

boxplot(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", col="red", boxwex=0.5)


# 히스토그램과 상자그림 동시에 그리기

library(UsingR)

simple.hist.and.boxplot(mag)


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

'IT > 빅데이터분석및시각화' 카테고리의 다른 글

[빅데이터분석및시각화 09] R 텍스트마이닝 01  (0) 2019.01.26
[빅데이터분석및시각화 08] R Plot / 수치형 자료를 범주형으로 바꾸기  (0) 2019.01.16
[빅데이터분석및시각화 06] R 히스토그램 그리기  (0) 2018.12.27
[빅데이터분석및시각화 05] R pie3D / barplot 함수  (0) 2018.12.24
[빅데이터분석및시각화 05] R 파이차트 그리기  (0) 2018.12.20

안녕하세요 구도입니다.


오늘은 R 자체에 내장된 데이터를 불러와 히스토그램을 그리는 방법에 대해 배워보도록 하겠습니다.


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


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



#지진 데이터를 활용한 히스토그램 그리기

data(quakes)  # 지진 강도의 데이터 세트 불러오기

quakes


?quakes #해당자료 quakes에 대한 자세한 설명 볼 수 있음


head(quakes)  # 자료의 상위 일부만 나타낼 때 사용. 

head(quakes, 10L)  # 자료의 상위 10줄만 나타낼 때 사용. 


str(quakes)   #str()를 이용하여 자료 및 변수들의 유형 확인. num=숫자형(실수), Factor=인자형, chr=문자형, int=숫자형(정수)


mag <- quakes$mag    # 지진의 강도에 대한 벡터 데이터 할당

mag     # 지진의 강도 출력


hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수")   #지진 강도에 대한 히스토그램 출력



# 계급구간 설정


min(mag)

max(mag)


par(mfrow=c(1,3))

hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", breaks="Sturges")   # 계급의 구간을 Sturges 공식으로 정함

hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", breaks=seq(4,6.5,by=0.5))   # 계급의 구간 설정을 4~6.5 구간을 0.5 간격으로 하는 계급 설정

hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", breaks=c(4.0,4.4,4.8,5.2,5.6,6.0,6.4,6.8))  

##xlim=c(150,190),  ylim=c(0, .09)) 옵션 이용해보기!




# 색깔 지정


par(mfrow=c(1,2))

colors <- c("red", "orange", "yellow", "green", "blue", "navy", "violet")

hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", col=colors, breaks=seq(4,6.5,by=0.5))  


hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", col=rainbow(7), breaks=seq(4,6.5,by=0.5))  



# y축 선택(도수 vs 상대도수)


par(mfrow=c(1,2))

colors <- c("red", "orange", "yellow", "green", "blue", "navy", "violet")

hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", col=colors, breaks=seq(4,6.5,by=0.5), freq=TRUE)  # freq=TRUE가 디폴트&도수


hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", col=colors, breaks=seq(4,6.5,by=0.5), freq=FALSE) # freq=FALSE 의 의미는 분포밀도값. 확률에 대응하며, probability=T로 설정한 결과와 동일


hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", col=colors, breaks=seq(4,6.5,by=0.5), probability=T) # freq=FALSE 의 의미는 분포밀도값. 확률에 대응하며, probability=T로 설정한 결과와 동일



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

'IT > 빅데이터분석및시각화' 카테고리의 다른 글

[빅데이터분석및시각화 08] R Plot / 수치형 자료를 범주형으로 바꾸기  (0) 2019.01.16
[빅데이터분석및시각화 07] R 상대도수 y축 / 줄기잎그림 / boxplot 등  (0) 2019.01.09
[빅데이터분석및시각화 05] R pie3D / barplot 함수  (0) 2018.12.24
[빅데이터분석및시각화 05] R 파이차트 그리기  (0) 2018.12.20
[빅데이터분석및시각화 04] R 데이터 파일 읽기  (0) 2018.12.18

안녕하세요 구도입니다.


오늘은 지난 시간에 이어 파이차트를 그리는 법을 복습하고 pie3D 함수, barplot 함수를 그리는 법에 대해 배워보겠습니다.


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


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


#파이차트 그리기 : 다양한 색을 넣어 그리기

par(mfrow=c(2,3))

pie(x, labels=label, init.angle=90, col=c("red", "blue", "green", "yellow"), main="부서 별 영업 실적")  # 부채꼴의 색을 판매액(x)의 수만큼 작성자가 원하는 색으로 설정.

pie(x, labels=label, init.angle=90, col=rainbow(length(x)), main="부서 별 영업 실적")  # 부채꼴의 색을 판매액(x)의 수만큼 무지개 색으로 설정.

pie(x, labels=label, init.angle=90, col=heat.colors(length(x)), main="부서 별 영업 실적")  # 부채꼴의 색을 판매액(x)의 수만큼 적색과 황색에 치우친 색으로 설정.

pie(x, labels=label, init.angle=90, col=terrain.colors(length(x)), main="부서 별 영업 실적")  # 부채꼴의 색을 판매액(x)의 수만큼 지구 지형 색으로 설정.

pie(x, labels=label, init.angle=90, col=topo.colors(length(x)), main="부서 별 영업 실적")  # 부채꼴의 색을 판매액(x)의 수만큼 앞에서 조금 더 청색에 가까운 색으로 설정.

pie(x, labels=label, init.angle=90, col=cm.colors(length(x)), main="부서 별 영업 실적")  # 부채꼴의 색을 판매액(x)의 수만큼 핑크, 블루 색으로 설정.



#pie3D 함수

library(plotrix)

pie3D(x, labels=label, explode=0.1, labelcex=0.8, main="부서별 영업 실적")  #explode옵션은 부채꼴들의 간격. 0의 값은 간격이 없음. labelcex옵션은 라벨 문자의 크기


par(mfrow=c(1,3))

pie3D(x, labels=label, explode=0, labelcex=0.8, main="부서별 영업 실적")  

pie3D(x, labels=label, explode=0.1, labelcex=0.8, main="부서별 영업 실적") 

pie3D(x, labels=label, explode=0.5, labelcex=0.8, main="부서별 영업 실적")  


par(mfrow=c(1,3))

pie3D(x, labels=label, explode=0.1, labelcex=0.5, main="부서별 영업 실적")  

pie3D(x, labels=label, explode=0.1, labelcex=0.7, main="부서별 영업 실적")  

pie3D(x, labels=label, explode=0.1, labelcex=1, main="부서별 영업 실적")  




#barplot : 단순 바 차트 1

height <- c(9,15,20,6)   # 영업 실적 할당

name <- c("영업 1팀", "영업 2팀", "영업 3팀", "영업 4팀")     # 부서명 할당

barplot(height,names.arg=name, main="부서별 영업 실적")



# 단순 바 차트 2 

barplot(height,names.arg=name, main="부서별 영업 실적", col=rainbow(length(height)))


par(mfrow=c(2,3))

barplot(height,names.arg=name, main="부서별 영업 실적", col=c("red", "blue", "green", "yellow"))

barplot(height,names.arg=name, main="부서별 영업 실적", col=rainbow(length(height)))

barplot(height,names.arg=name, main="부서별 영업 실적", col=heat.colors(length(height)))

barplot(height,names.arg=name, main="부서별 영업 실적", col=terrain.colors(length(height)))

barplot(height,names.arg=name, main="부서별 영업 실적", ccol=topo.colors(length(height)))

barplot(height,names.arg=name, main="부서별 영업 실적", col=cm.colors(length(height)))


# 단순 바 차트 3 

barplot(height,names.arg=name, main="부서별 영업 실적", col=rainbow(length(height)), xlab="부서", ylab="영업 실적(억 원)")


par(mfrow=c(1,2))

barplot(height,names.arg=name, main="부서별 영업 실적", col=rainbow(length(height)), xlab="부서", ylab="영업 실적(억 원)")

barplot(height,names.arg=name, main="부서별 영업 실적", col=rainbow(length(height)), xlab="부서", ylab="영업 실적(억 원)", ylim=c(0,25))


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


'IT > 빅데이터분석및시각화' 카테고리의 다른 글

[빅데이터분석및시각화 07] R 상대도수 y축 / 줄기잎그림 / boxplot 등  (0) 2019.01.09
[빅데이터분석및시각화 06] R 히스토그램 그리기  (0) 2018.12.27
[빅데이터분석및시각화 05] R 파이차트 그리기  (0) 2018.12.20
[빅데이터분석및시각화 04] R 데이터 파일 읽기  (0) 2018.12.18
[빅데이터분석및시각화 03] R matrix / data frame 함수  (0) 2018.12.16

안녕하세요 구도입니다.


오늘은 지난 시간에 이은 차트그리기 2편!


파이차트 그리는 방법과 차트 위에 퍼센트 숫자를 표현하는 방법에 대해서 배워보도록 하겠습니다.


코드만 보고 이해하시지 말고 프로그램 설치 후 직접 해보시면서 공부하시면 더 쉽게 이해하실 수 있으십니다.


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



#패키지 설치

install.packages("graphics")

library(graphics)


x <- c(9,15,20,6)   # 영업 실적 할당

label <- c("영업 1팀", "영업 2팀", "영업 3팀", "영업 4팀")     # 부서명 할당

pie(x,labels=label, main="부서별 영업 실적")   # 파이 차트 출력 1

pie(x,labels=label, clockwise=TRUE, main="부서별 영업 실적")   # 파이 차트 출력 2



# 부채꼴 출력방향

par(mfrow=c(1,2))

pie(x,labels=label, main="부서별 영업 실적")   

pie(x,labels=label, clockwise=TRUE, main="부서별 영업 실적")   



#파이차트 시작각도

par(mfrow=c(1,3))

pie(x,labels=label, init.angle=90, main="부서별 영업 실적")   

pie(x,labels=label, init.angle=180, main="부서별 영업 실적") 

pie(x,labels=label, init.angle=270, main="부서별 영업 실적")  



#퍼센트가 있는 파이차트

pct <- round(x/sum(x)*100)   #판매액의 상대적 비율을 구한 후 반올림하여 정수로 만듬. round(z,2)의 의미는 z값을 소수 2자리까지 반올림.

label <- paste(label, pct)   #각 부서명에 상대적 비율 값(pct)을 붙임

label <- paste(label, "%", sep="")   #각 부서명(label)에 '%' 기호를 붙임 & label과 %를 하나로 연결해 주고 그 사이값을 sep 명령어를 통해 구분

                 # sep="" : 공백을 없게 만들어줌, sep=" ": 2개의 문자를 이을 때, 띄어쓰기 입력, sep="---" : 2개의 문자 사이에 ---입력



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

'IT > 빅데이터분석및시각화' 카테고리의 다른 글

[빅데이터분석및시각화 06] R 히스토그램 그리기  (0) 2018.12.27
[빅데이터분석및시각화 05] R pie3D / barplot 함수  (0) 2018.12.24
[빅데이터분석및시각화 04] R 데이터 파일 읽기  (0) 2018.12.18
[빅데이터분석및시각화 03] R matrix / data frame 함수  (0) 2018.12.16
[빅데이터분석및시각화 02] R 리스트(list) / 배열(array) 함수  (0) 2018.12.12

안녕하세요 구도입니다.


오늘은 R자체에 내장된 데이터 셋을 읽는 방법과 외부 파일을 읽는 방법에 대한 코드를 정리해보았습니다.


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



#R데이터 읽기 및 외부 데이터 파일 읽기

write.table(quakes, file="C://Users//user//Desktop//mydata1.txt", sep=",") # 데이터 간 구분자는 쉼표(구분자를 탭으로 지정하려면 sep="\t")

my1<- read.table("C://Users//user//Desktop//mydata1.txt", sep=",", header=T)

my1

(*주황색으로 표시한 곳은 각 개별 파일 경로를 복사 붙여넣기 하면 끝이랍니다)


write.table(quakes, file="C://Users//user//Desktop//quakes.csv", sep=",")

write.table(quakes, file="C://Users//user//Desktop//quakes1.csv", sep=",", row.name=FALSE)

my2<- read.csv("C://Users//user//Desktop//quakes.csv", header=T)

my3<- read.csv("C://Users//user//Desktop//quakes1.csv", sep=",", header=T)


write.csv(quakes, file="C://Users//user//Desktop//quakes2.csv")

my4<- read.csv("C://Users//user//Desktop//quakes2.csv", header=TRUE)



#작업공간 설정

setwd() #작업공간 설정

getwd() #작업공간 확인


getwd()   #현재 작업공간 위치 확인

setwd("C://Big")  # 슬래시(/)와 역슬래시(\)는 구분됨. 슬래시(/)와 역슬래시 두개(\\)는 같은 의미. 

getwd()

write.table(quakes, file="C://Big//mydata1.txt", sep=",") # 데이터 간 구분자는 쉼표(구분자를 탭으로 지정하려면 sep="\t")

my1<- read.table("mydata1.txt", header=T)

my1



url <- "http://vincentarelbundock.github.io/Rdatasets/csv/datasets/Titanic.csv"

x <- read.csv(url)

x



#지난 주제 복습

install.packages("graphics")

library(graphics)


x <- c(9,15,20,6)   # 영업 실적 할당

label <- c("영업 1팀", "영업 2팀", "영업 3팀", "영업 4팀")     # 부서명 할당

pie(x,labels=label)


오늘은 내용이 짧네요 ㅎㅎ


그래도 빅데이터를 분석하는데 중요한 코드들이니 열심히 공부하시면 큰 도움이 되실꺼라 믿습니다.


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

'IT > 빅데이터분석및시각화' 카테고리의 다른 글

[빅데이터분석및시각화 05] R pie3D / barplot 함수  (0) 2018.12.24
[빅데이터분석및시각화 05] R 파이차트 그리기  (0) 2018.12.20
[빅데이터분석및시각화 03] R matrix / data frame 함수  (0) 2018.12.16
[빅데이터분석및시각화 02] R 리스트(list) / 배열(array) 함수  (0) 2018.12.12
[빅데이터분석및시각화 01] R 연산자와 벡터생성함수  (0) 2018.12.10
12

+ Recent posts