I'm a global seller in Korea. (*Amazon, eBay, Shopee and so on)

 

Now i can ship all of masks out to your country. (*Since 23th Oct)

 

 

This is a price how much i can give (*The price can be change depends on market price)

 

*3M 1860 (1Box = 20EA) -> $115.99 (Include shipping fee)

*3M 1860S (1Box = 20EA) -> $115.99 (Include shipping fee)

*KF94 (10EA) -> $59.99 (Standard shipping way = Post Office / Usually take 3 weeks ~)

*KF94 (20EA) -> $110 (Standard shipping way = Post Office / Usually take 3 weeks ~)

 

If you are hurry to get it please let us know. We can suggest you another shipping way like EMS, Fedex

 

We only accept Paypal

 

You guys can contact to me through Chat or message

 

Thank you

안녕하세요 구도입니다.


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


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


*프로그램은 '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")



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


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

[빅데이터분석및시각화 12] R 텍스트마이닝 04  (0) 2019.02.13
[빅데이터분석및시각화 11] R 텍스트마이닝 03  (0) 2019.02.03
[빅데이터분석및시각화 09] R 텍스트마이닝 01  (0) 2019.01.26
[빅데이터분석및시각화 08] R Plot / 수치형 자료를 범주형으로 바꾸기  (0) 2019.01.16
[빅데이터분석및시각화 07] R 상대도수 y축 / 줄기잎그림 / boxplot 등  (0) 2019.01.09

안녕하세요 구도입니다.


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

안녕하세요 구도입니다.


최근 일이 너무너무 바빠 블로그 글 작성에 전혀 신경을 쓰지 못했는데 바쁜 과정들을 잘 마치고 약간의 여유를 즐기며 일을 하기 위해 치앙마이에 왔답니다.


약 5개월 만에 다시 오게 된 치앙마이!


공항에서 나오자마자 바로 그랩을 잡아 일반 택시보다 저렴하게 숙소에 도착!


2018/10/25 - [유용한 정보s] - 태국 grab(그랩) 사용 방법 / 방콕 파타야 푸켓 치앙마이(1편)



저는 지난 번에 지냈던 같은 숙소에 왔는데 지난 번에 이용했던 Cleaning Service가 비용 대비 만족도가 낮아서 신청하지 않았습니다.


그랬더니...


진짜 아무것도 없더라구요.. 아무것도...


첫 날은 도착한 시간이 늦었기에 어쩔 수 없이 맨 매트리스 위에 수건을 깔고 잠에 들었답니다.


그리고 두 번째 날!


치앙마이에서 알게 된 유튜브를 하는 동생이 너무 고맙게도 이불과 매트리스 커버를 빌려주었고

그 덕에 더 고급지게 된 제 방입니다!


학 이불이랍니다 ㅎㅎ



이후 깟수언깨우에서 베개를 구입하고 마야몰에서 유심칩도 구입하고 돌아왔습니다.


와서는 바로 밀린 업무 시작...ㅠㅠ


그리고 시간이 지나 드디어 끝!


그리고 드디어 먹는 첫 끼!


어디서 먹을까 고민하다가


지난 번 한 달 살기할 때 거의 하루도 거르지 않고 와서 아침을 먹었던 식당이 있는데 그리로 가기로 결정!

(제가 다른 글에서도 소개했던, 그 식당이랍니다 ㅎ)


오랜만에 가자마자 두 자매 사장께서 저를 기억해주시는지 너무 반갑게 맞이해주셨답니다 ㅎㅎ..


제가 매일 아침마다 2~3끼를 주문해 먹어서 그런가 확실하게 기억해주시더라구요.


갑자기 안보여서 걱정했었다고 말씀해주시고.. 너무 감사했답니다.


사실 한국에 가서도 이 집 음식은 계속 생각이 났었는데 기억까지 해주신다니...

이번에도 매일 아침은 이 곳에서...ㅎㅎ


이번에 주문한 음식은 튀김족발덮밥과 팟타이!



먼저 나온 튀김족발덮밥!


간장소스 베이스에 튀긴족발과 현지 식재료를 넣어 만든 음식이랍니다ㅎㅎ.


제가 가장 좋아하는 음식 중 하나라는!


특히 튀긴족발이랑 같이 먹으면....크...!


그리고 뒤이어 나온 팟타이...는...사진이...................없습....니...다 ㅎㅎ....


분명 찍었는데 왜 갤러리에는 남아있지 않는걸까요...퓨..


잘 확인하고 찍도록 해야겠어요.


무튼!


이렇게 메뉴 2개를 주문해서 나온 금액은 75바트, 우리나라 돈으로 약 2,200원 정도 랍니다 헿헿.


맛있는 식사를 마치고 다시 열심히 일하기 시작.


오늘은 밖에 비도 오고 그래서 카페에 가지 않고 숙소에서 업무를 보기로 했답니다.


일일 목표 작업량을 다 마무리하고!


아로마로 비타민 필터를 설치하고 가치있는 샤워를! ㅎㅎ


(*제품, 지원해주셔서 감사합니다)


상큼한 향이 나는 깨끗한 물로 샤워를 하니 정말 기분이 더 좋아지더라구요 ㅎㅎ.


깨끗하고 향기로운 샤워를 마지막으로 오늘 하루는 이렇게 마무리!




이번 치앙마이에 지내는 동안 매일매일 어디 구경을 가는 것 보단 업무를 보는 시간이 절대적으로 많겠지만


평범한 일상 속에서 여러분들께 소개해드리고 싶은 여러 좋은 것들을 발견하면 소개해드리도록 하겠습니다:)



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





'꽃보다 여행 > 태국 치앙마이 한 달 살기' 카테고리의 다른 글

[태국 치앙마이 한 달 살기05] 도이수텝(Wat Phra that Doi Suthep)  (0) 2018.11.13
[태국 치앙마이 한 달 살기04] 코끼리케어프로그램(Elephant Care Program)  (0) 2018.11.08
[태국 치앙마이 한 달 살기03] 반캉왓 (No.39 cafe) / 앙깨우호수  (0) 2018.11.06
[태국 치앙마이 한 달 살기02] 매림,몬쨈투어 / 노스게이트(The North Gate Jazz Co-op)  (2) 2018.11.05
[태국 치앙마이 한 달 살기01] 치앙마이 싼티탐 맛집 / 유심 구매 방법  (0) 2018.10.29

안녕하세요 구도입니다.


오늘은 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

안녕하세요 구도입니다.


오늘은 지난 시간에 이은 삼양 불닭떡볶이 두 번째 시간!


까르보나라 맛 편 입니다 ㅎㅎ.


오리지날 맛은 동네 편의점에서 구했었는데 까르보나라 맛은 매번 입고되자마자 바로바로 판매가 되어서 구하기가 쉽지 않더라구요.


그래서 다른 방법으로 저는 삼양맛샵 이라는 홈페이지에서 불닭까르보 2개 + 불닭오리지날 2개 이렇게 주문을 하였답니다.


시간이 조금 걸리지만 시중 소비자가 보다 좀 더 저렴하게 구매할 수 있답니다 ㅎㅎ.


드디어 도착한 불닭까르보떡볶이!



기존 오리지날과 비교했을 때 보다 시각적으로는 더 예쁘네요 ㅎㅎ.


구성품은 다음과 같습니다!



불닭떡볶이 까르보 맛은 오리지날과 비교했을 때 구성품 차이가 아주 조금 있었는데요.


그건 바로 까르보 분말스프입니다!


*까르보 분말스프는 맨 마지막에 넣어주셔야 한다는 점! 조리하실 때 꼭 주의하세요*


자세한 조리법은 제품에 잘 설명되어 있으니 참고해주시고!


전자레인지 조리 후 까르보 분말스프를 탈탈탈 털어 넣어줍니다. 단 하나의 분말도.. 놓치지 않을꺼에요.



정말 단 하나의 분말도 남기지 않고 다 털어 넣었답니다.


이제 쓱쓱 잘 비벼주기만 하면..



TADA~ 짜잔~ .......?


완...성?..


이게 사진은 좀 약간 어죽(?) 같이 나왔는데.. 실제로 보시면 그렇지 않답니다..ㅎㅎ;;


본격적으로 먹기 전, 떡 하나 포크로 콕! 찍어서



여러분들에게 인사시켜주곤


우걱우걱 쩝쩝



제가 지난 번 오리지날 맛을 먹었을 때 약간의 한약냄새(?) 같은게 났다고 그랬는데


까르보는 분말스프 향이 강해서 그런건지 한약냄새는 전혀 안나더라구요.


맛도 훨씬 좋았답니다.


매콤함과 동시에 고소함이 있어 오리지날 맛 보다는 좀 덜 맵게 다가오는 것 같아요.


삼양러버 중 한명으로 지난 오리지날 맛 편에서는 조금 아쉽다는 의견을 얘기했는데


이번에는 완전 대만족이었답니다.


불닭떡볶이 까르보는 진심 존맛탱구리.



지금은 주변 편의점에서 쉽게 구할 수 있다고 하니 떡볶이 좋아하시는 분들은 꼭 한번 드셔보세요!


오리지날보단 까르보를 언능 더 구매해야겠어요.


자주 먹게 될 것 같은 느낌이..


다음 번에는 후라이드 치킨이랑 같이 먹으면서 떡볶이 소스에 치킨도 찍어먹고 하면서


치킨 + 떡볶이의 슈퍼 합체 조합을 소개해드리는 시간을 가져보도록 하겠습니다.



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

맛있는거 많이 드세요:)


'오늘의 식사' 카테고리의 다른 글

[이태원 / 해방촌 맛집] 보니스 피자펍 Bonny's Pizza Pub  (0) 2018.12.25
[삼양식품 신제품03] 불닭떡볶이 리얼 후기  (0) 2018.12.21
[삼양식품 신제품 02] 핵불닭볶음면 리얼 후기  (0) 2018.12.08
[삼양식품 신제품 01] 불닭쫄볶이 리얼 후기  (0) 2018.12.07
[명동 충무로] 마카롱 맛집, 달콤방 : "시렵지만 달콤한 시간"  (0) 2018.12.04

안녕하세요 구도입니다.


오늘은 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
1234···9

+ Recent posts