정보
- 업무명 : R 및 flourish studio 를 이용하여 국가별 탄소 배출량 시각화 레이싱 차트 만들기
- 작성자 : 해솔
- 작성일 : 2021.02.01
- 설 명 :
- 수정이력 :
내용
[개요]
- 안녕하세요 웹 개발 및 데이터 분석을 담당하는 해솔 입니다.
- R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어입니다.
- 따라서 다양한 데이터 분석 및 가공이 가능하며 시각화 작업 역시 수행이 가능합니다.
- flourish studio 는 웹 사이트에서 간편하게 시각화를 할 수 있는 툴이며 별도의 프로그램 설치가 필요없이 웹 브라우저에서 데이터를 입력하는 경우 이를 빠르게 시각화 할 수 있는 강력한 도구 입니다.
- 본 글에서는 국가별 이산화탄소 배출량을 다운받은 후 이를 가공하여, flourish studio 를 이용하여 레이싱 차트를 만들어보고자 합니다.
[특징]
- 국가별 탄소 배출량 자료 다운로드
- 데이터 가공
- 시각화
[기능]
- 국가별 탄소 배출량 데이터 가공 및 시각화
[활용 자료]
- 하기 링크로부터 제공하는 글로벌 탄소 배출량 데이터 자료
[자료 처리 방안 및 활용 분석 기법]
- 없음
[사용법]
- 소스 코드 참조
[사용 OS]
- Windows 10
[사용 언어]
- R v4.0.3
- flourish studio
소스 코드
[자료 다운로드]
- 자료를 다운받기 위해 아래의 링크에 접속 한다.
- 스크롤을 내리면 아래의 화면이 나온다.
- 해당 화면에서 다운로드 버튼을 누르면 자료를 다운로드 할 수 있다.
[데이터 라벨링 작업]
- 원본 자료의 경우 자료를 국가의 이름이 영어로 되어 있다.
- 따라서 국가의 이름을 좀 더 알아보기 쉽게 원본 데이터의 국가에 해당하는 이름을 한글로 바꿔주는 code_list를 따로 생성 하였다.
- 코드 리스트는 총 2개로 나뉘어 있으며 하나는 명백히 국가인 것 나머지 하나는 대륙 전체나 단체 / 기타 사건 등에 대한 영어 이름을 한글로 바꾼 리스트 이다.
- 즉 국가코드/한글 국가명 또는 국가코드가 없는 경우 영명을 한글로 바꾸어 매칭한 사전 테이블이라고 보면 된다.
- 본문에 라벨링 예시 이미지 및 결과 파일을 같이 첨부 하였다.
[데이터 전처리]
- 라이브러리 로드 및 데이터 및 사전에 라벨링된 코드 리스트 읽기
library(dplyr)
library(data.table)
library(tidyverse)
library(stringr)
in_data = read.csv("./in/annual-co-emissions-by-region.csv")
Code_kr_name = read.csv("./Code_list.csv")
Code_kr_name2 = read.csv("./Code_list2.csv")
head(in_data)
head(Code_kr_name)
- 코드 목록과 데이터 매칭 및 전처리 작업
- dplyr 패키지를 사용하여 데이터 전처리 작업
in_data_L1 = dplyr::left_join(in_data,Code_kr_name,by="Code")
in_data_L2 = dplyr::left_join(in_data_L1,Code_kr_name2,by="Entity")
colnames(in_data_L2)[4] = "CO2"
in_data_L3 = in_data_L2 %>%
dplyr::filter(!is.na(Code_KR) | !is.na(Code_KR2)) %>%
dplyr::mutate(Code_KR = ifelse(!is.na(Code_KR2),Code_KR2,Code_KR)) %>%
dplyr::select(-Code_KR2) %>%
dplyr::mutate(CO2 = CO2*10.0) %>% # 단위 : 1만톤
dplyr::filter(CO2 > 0) %>%
dplyr::select(Year,Code_KR,CO2) %>%
dplyr::distinct()
head(in_data_L3)
- 행/열 전환 작업
- flourish studio 를 통해 레이싱바를 시각화 하는 경우 각각의 컬럼을 따라 시간순으로 진행된다.
- 따라서 위 사이트에 입력해야 할 데이터 역시 이 규칙을 따라야 한다.
- 그러나 각 국가별로 데이터의 시작 기간과 그 간격이 일정하기 않기 때문에 tidyr 패키지의 spread 함수를 이용하여 일괄적으로 행과 열 전환이 불가능하다.
- 따라서 직접 loop 문을 이용하여 직접 행/열을 전환시키는 작업을 수행 하였다.
- 결과적으로 result.csv 파일이 생성되는데 이것이 우리가 최종적으로 시각화에 사용하고자 하는 파일이다.
- 출력된 파일은 행과 열이 전환되어 있으며 UTF-8로 인코딩 되어있다. 하단에 예시 파일을 첨부 하였다.
min_col = min(in_data_L3$Year)
max_col = max(in_data_L3$Year)
row_list = unique(in_data_L3$Code_KR)
new_df = data.frame(Code_KR = row_list)
for (ccol in seq(min_col,max_col,1)) {
in_data_L4 = in_data_L3 %>%
dplyr::filter(Year == ccol) %>%
dplyr::select(-Year)
new_df = dplyr::left_join(new_df,in_data_L4,by=c("Code_KR"))
new_df = new_df %>%
dplyr::mutate(CO2 = ifelse(is.na(CO2),"",CO2)) %>%
dplyr::distinct()
colnames(new_df)[dim(new_df)[2]] = paste0(ccol,"년")
print(dim(new_df)[2])
}
write.table(new_df,"result.csv",row.names = F,sep=",")
[flourish studio 를 통한 시각화]
- 아래의 사이트에 접속한다.
- 스크롤을 내리면 Bar chart race 항목이 보이는데 들어간다. (아래 이미지의 첫번째)
- 상단에서 생성했던 데이터를 import 한 후 설명서에 따라 만들어 주면 된다.
- flourish studio 의 레이싱바를 만드는 자세한 방법은 아래의 링크를 참조하면 된다.
[결과 영상]
www.youtube.com/watch?v=YBV9vGrMDKs&t
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'프로그래밍 언어 > R' 카테고리의 다른 글
[R] 2019년 주요 도시의 월별 오존 농도 데이터를 이용하여 계절별 오존 농도 차이 여부 검정 (0) | 2021.02.26 |
---|---|
[R] R을 이용하여 국가기상위성센터의 위성영상 자료 다운로드 하기 (1) | 2021.02.06 |
[R] 격자정보 및 U,V,풍속 정보를 이용하여 동아시아 지도에 매핑하기 (0) | 2021.01.30 |
[R] WRF 모델자료 후처리 시퀀스1 - nc 파일을 풀어 txt 형태로 떨어뜨리기 (0) | 2021.01.27 |
[R] 온라인 리눅스 (Linux) 환경에서 R 및 R Studio 설치/업데이트 (0) | 2021.01.27 |
최근댓글