[R] 시각화를 위한 데이터 구조 변경 및 추가 개념

2024. 8. 25. 18:09·Coding & Data Analysis/R

인트로

데이터를 어떻게 표현할지를 미리 구상해놓은 후, 그것을 구현하기 위한 코드를 차례차례 작성하면서

하나의 결과물을 위해 달려나가는 것이 필요하다. 그리고 당연하다시피 모든 데이터가

분석하기 딱 좋은 형태로 존재하지는 않는다. 그렇기에 재구조화라는 것이 필요한 법.

 

 

 

수집

오늘은 해외 입국자 추이 데이터를 활용하여 월별 선 그래프와 누적 막대 그래프를 작성해볼 것이다.

데이터 수집은 관광지식정보시스템에서 수집했다.

https://know.tour.go.kr/

 

관광지식정보시스템

여행지별 국내여행 횟수 여행지별 국내여행 지출액 지역별 관광사업체 수

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' 이다.

 

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
'Coding & Data Analysis/R' 카테고리의 다른 글
  • [R] 지역별 미세먼지 농도 비교 & 가설 검정
  • [R] 코로나19 선별진료소 빈도분석 & 지도 시각화
  • [R] Excel 전처리 & 빈도분석 시각화 개념들
  • [R] ggmap 패키지를 활용한 지도 시각화
흑석동사는시골쥐
흑석동사는시골쥐
문과 경영학도 숫자 배우기 프로젝트
  • 흑석동사는시골쥐
    NaN
    흑석동사는시골쥐
  • 전체
    오늘
    어제
  • 링크

    • 독서 일지
    • 올리고 싶은 거 올려요
    • 분류 전체보기 (75)
      • Coding & Data Analysis (52)
        • Python (23)
        • R (21)
        • Excel & Data (2)
        • Git & Github (4)
        • Certificate (2)
      • Project (15)
        • 일자리 스크래핑 서비스 (8)
        • 최적의 인스타 피드 (2)
        • 주식 & 비트코인 분석 (5)
      • Economics (1)
        • 경제기사 스크랩 (1)
      • Records & Thoughts (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 공지사항

  • 인기 글

  • 태그

    데이터
    동아리
    다항회귀
    코랩
    웹스크래퍼
    시각화
    엔비디아
    Python
    지도
    자격증
    프로그래밍
    개발
    주가분석
    전처리
    기초
    matplotlib
    파이썬
    FLASK
    git
    주식
    AI반도체
    데이터수집
    머신러닝
    심장병 데이터
    데이터분석
    r
    ADSP
    비전공자
    adsp공부법
    Colab
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
흑석동사는시골쥐
[R] 시각화를 위한 데이터 구조 변경 및 추가 개념
상단으로

티스토리툴바