인트로
데이터를 어떻게 표현할지를 미리 구상해놓은 후, 그것을 구현하기 위한 코드를 차례차례 작성하면서
하나의 결과물을 위해 달려나가는 것이 필요하다. 그리고 당연하다시피 모든 데이터가
분석하기 딱 좋은 형태로 존재하지는 않는다. 그렇기에 재구조화라는 것이 필요한 법.
수집
오늘은 해외 입국자 추이 데이터를 활용하여 월별 선 그래프와 누적 막대 그래프를 작성해볼 것이다.
데이터 수집은 관광지식정보시스템에서 수집했다.
관광지식정보시스템
여행지별 국내여행 횟수 여행지별 국내여행 지출액 지역별 관광사업체 수
know.tour.go.kr
엑셀 전처리
물론 엑셀이라는 프로그램은 매우 다양한 기능을 지원하기 때문에
데이터의 크기가 비상식적으로 크거나 다루기 어려울 정도가 아닌 이상 R코드가 필요하지 않다.
하지만 두 방법이 있다면, 하나만 배워놓기보단 어떤 일이 일어날지 모르기 때문에 두 방법을 모두 알아놓자.
- 셀 병합 해제하기 ( '병합하고 가운데 맞춤' 클릭하여 설정 해제 )
- 소계 데이터 행 삭제하기 ( 열들을 묶어서 중간마다 소계를 보여주는 행. 대륙별 합계가 예시 )
- 컬럼명 공백 제거하기 ( Ctrl + F 통해 찾기/바꾸기 )
R 전처리
# gsub 함수 : 특정 데이터의 문자열을 다른 문자열로 대체하는 함수
visit_data$country <- gsub(' ','',visit_data$country)
컬럼명 전처리 ( 엑셀 기능이 훨씬 쉬움 )
# 데이터를 특정 열 기준으로 정렬한 후 상위 5개 데이터만 추출
top5_data <- visit_data[order(-visit_data$JAN),] |> head(n=5)
- order 함수 : 특정 열 기준 오름차순으로 행 번호를 모두 return.
- |> : 네이티브 파이프라인 연산자. %>% 와 기능이 동일하지만 dplyr 패키지가 불필요하다.
# 데이터 재구조화 (measure.vars 를 넣지 않았기때문에 모든 열이 재구조화 대상)
top5_data <- melt(top5_data,id.vars='country',variable.name='month',value.name ='visitors')
무조건 해당 재구조화를 진행해야지만 나라(group)에 따른 월별(x축) 방문자(y축) 그래프를 그릴 수 있다.
선 그래프로 시각화
# 선 그래프
ggplot(top5_data,aes(x=month,y=visitors,group=country)) + geom_line(aes(color=country)) +
labs(title='2024년 해외 입국자 추이') + scale_y_continuous(breaks = seq(0,500000,50000))
- group = country : 나라별로 선 그래프를 만들기 위한 그룹화
- color = country : 나라별로 색깔 다양화
- scale_y_continuous : ggplot 의 y축 범위를 지정하는 함수 ( 처음 , 끝 , 단위 )
막대그래프로 시각화
# 막대그래프 1
ggplot(top5_data,aes(x=month,y=visitors,fill=country)) +
geom_bar(stat='identity',position = 'dodge') +
scale_y_continuous(breaks = seq(0,500000,50000))
# 막대그래프 2 (stack 옵션은 그래프가 쌓이기 때문에 자동으로 y축범위를 설정해준다.)
ggplot(top5_data,aes(x=month,y=visitors,fill=country)) +
geom_bar(stat='identity',position = 'stack')
- fill = country : 그룹화랑 같지만, 색깔 옵션까지 추가되었다고 생각하면 편함.
- stat = 'identity' : geom_col 함수처럼 geom_bar 에 y축옵션을 추가하게 해주는 코드!
- position = 'dodge' : 각 그룹을 전부 다른 막대로 표시하게 해주는 옵션. 기본값은 'stack' 이다.
R의 큰 숫자 표현 방법
R에서는 10만이 넘어가는 숫자는 특수하게 표현하기에 주의해야 한다.
규칙은 ' e 앞에 있는 숫자 + 뒤에 0의 개수 ' 정도로 기억하면 된다.
예를 들어, 1e + 05 라고 표시된 경우, 1 뒤에 0이 5개 있으니 100000 이다.
해당 표현형은 많은 사람들이 알지 못하기 때문에 표현의 용이성을 위해
scale_y_continuous 등의 함수로 따로 축을 설정하는 것이다.
'Coding & Data Analysis > R' 카테고리의 다른 글
[R] 지역별 미세먼지 농도 비교 & 가설 검정 (6) | 2024.08.28 |
---|---|
[R] 코로나19 선별진료소 빈도분석 & 지도 시각화 (0) | 2024.08.27 |
[R] Excel 전처리 & 빈도분석 시각화 개념들 (0) | 2024.08.25 |
[R] ggmap 패키지를 활용한 지도 시각화 (0) | 2024.08.21 |
[R] 절편과 기울기 구하기 : 회귀 분석 (0) | 2024.08.20 |