[R_bigdata] R을 활용한 크롤링, 데이터 편집 및 시각화

웹에서 찾을 수 있는 데이터를 끌어오는 것을 크롤링이라고 하는데, 그 방법에 대한 예제이다. 여기서는 데이터를 가져오는 것 뿐만 아니라 가져온 데이터를 선택하거나 원하는 형태로 편집한다. 또 pie() 또는 barplot() 을 통해 데이터를 시각화 할 수도 있다.

#day03_05_crawling.R
install.packages('rvest')
library(rvest)

#id : '#'
#class : '.'

tour_rank <- read_html('https://en.wikipedia.org/wiki/World_Tourism_rankings')
tables<-html_nodes(tour_rank,'.wikitable')
tables

#세계국가 순위는 1번째 방에 저장되어있다.
html_table(tables[1])

df <- html_table(tables[1])[[1]]
df

#컬럼 정보 확인
str(df)

#rank,destination,2018년도 자료만 따로 구성하기
df1<- df[,c(1,2,3)]

#컬럼명(열)의 이름이 너무 길어서 수정하기
colnames(df1)<-c('rank','des','tour')
df1
str(df1) #million

#df1의 tour타입이 문자형이므로 수치형으로 변경하기
# - million을 없애기
# - million을 ''(공백)으로 변경하기.
#gsub(조건, 치환될 값, 데이터)
df1$tour <- gsub(' million', '', df1$tour)
df1

# 타입 확인하기
class(df1$tour)

# df1의 tour의 타입을 숫자형으로 변경하기.
df1$tour <- as.numeric(df1$tour)

# 타입 확인하기
class(df1$tour)

# df1의 tour의 비율(ratio)을 추가하기
# - 비율이란 전체 중에서 내가 차지하는 양
sum(df1$tour)
df1$tour / sum(df1$tour)
sum(df1$tour / sum(df1$tour)) # 전체 확인하기
a<-round(df1$tour / sum(df1$tour),2)*100
df1['ratio']<-a
df1

#시각화
#barchart 그리기
barplot(df1$tour)
barplot(df1$tour,names.arg = df1$des,col=1:10)
barplot(df1$tour,names.arg = df1$des,col=rainbow(10)) #rainbow 무지개색

#비율을 나타낼 때에는 barplot의 형태보다는 원형(pie)형태가 더 좋은 형태이다.
#pie 형태로 나타내기
pie(df1$tour)
#색과 데이터 라벨 표기하기
pie(df1tour, col=rainbow(10), labels=df1$des)
#라벨에 데이터와 비율을 같이 표기하기
#비율과 데이터를 묶어 변수에 담은 후 , 차트 생성 시 labels= 부분에 변수를 대입하는 방식으로 가능하다.
ratio <- paste0(df1$des,' ',df1$ratio,'%') # des ratio% 형태로 연결 될 것이다.
pie(df1tour, col=rainbow(10), labels=ratio)

#plot 에 대한 형태 예습

댓글