현재 다양한 산업군에서는 데이터 속 숨은 인사이트를 창출하기 위해, 데이터를 수집하고 관리하는데 많은 공을 들이고 있습니다. 이러한 기조에 따라 데이터의 규모가 커지고 형태도 다양해지면서 분석가는 이를 효율적으로 핸들링 방법도 고려해야합니다. 이와 관련하여 포스트 <1. R에 대하여>에서 현재 R은 base 문법과 Tidyverse 문법이 양립하고 있다고 말씀드린 적 있습니다. 해당 포스트에서는 Tidyverse체계에 대한 전반적인 개념과 특징을 살펴보겠습니다.

 

33.1. Tidyverse 정의와 특징

더보기

(1) tidy data의 정의

tidy는 문자 그대로 깔끔함을 의미하는데, tidy data란 스프레드 시트의 테이블 구조에서 아래과 같은 조건을 만족하는 것을 의미합니다.

 출처: Data Science with R(2016) by Garrett Grolemund

 ①테이블의 한 열은 하나의 변수(variable)를 의미해야함 

 ②테이블의 한 행은 하나의 관측치(obervation)를 의미해야함

 ③테이블의 한 셀은 하나의 값(value)을 의미해야함 

 

(2) tidyverse의 정의

tidiness한 철학을 기조로, 해들리 위컴(Hadley Wickham)과 그의 팀이 개발한 패키지 꾸러미입니다. tidyverse에는 tidy data를 위한 tidyr, 강력한 전처리 도구를 지원하는 dplyr, 시각화 패키지 ggplot 등으로 구성되어 있습니다. 

 

(3) tidyverse의 장점

 ①base 문법보다 일관적인 함수명 & 파라미터 구조를 가짐

 ②pipe operator(%>%)을 이용함으로써 편리하고 직관적인 작업을 할 수 있음

 ③컴퓨터 리소스를 (상대적으로) 효율적으로 사용함

 

(4) tidyverse의 단점

 ①base 문법과 데이터 구조, 표기법이 상이하여 기존 base문법에 익숙한 사람에겐 낯설 수 있음

 ②R, RStudio 업데이트 후 초기엔 (상대적으로) 안정성이 떨어질 수 있음

 ③기존 R이 아닌 Intel MKL을 지원하는 Microsoft R Open에서 호환성 문제가 존재함

 

33.2. Tidyverse의 대표적인 패키지들

더보기

(1) 데이터 호출 패키지, readr

readr 패키지는 R의 기본 구조인 데이터 프레임보다 개선된 형태인 티블(Tibble) 형태로 데이터셋을 호출 및 관리하는 패키지입니다. readr 패키지의 read_csv() 함수가 대표적이며, data.table 패키지의 fread() 함수보다는 읽기 속도가 느리지만 범용적으로 사용됩니다. 

 

(2) 데이터 전처리 패키지, tidyr & dplyr

tidyr 패키지는 기존 데이터프레임을 티블로 변환하는 기능을, dplyr 패키지는 base 문법보다 직관적인 전처리 함수들을 제공합니다. 특히, dplyr 패키지에 종속된 magrittr 패키지의 %>%는 코드 작성을 IN-OUT 방식에서, LEFT-RIGHT 방식으로 변경하여 직관성을 높입니다.

 

(3) 시계열 전처리 패키지, lubridate

lubridate 패키지는 날짜형 데이터의 전처리를 돕는 패키지입니다. 다양한 날짜-시간 규격 데이터를 파싱하여 처리하거나, 지연&시차 변수를 쉽게 생성할 수 있습니다. 

 

(4) 텍스트 전처리 패키지, stringr

stringr 패키지는 문자형(character; string) 데이터들을 전처리하는데 사용되는 패키지입니다. 함수 명칭이 str_로 시작하여 base 문법보다 일관적인 함수 명칭을 가지고 있고, 결과를 다양한 형태로 출력할 수 있습니다.  

 

(5) 함수형 프로그래밍 패키지, purrr

R의 고질적인 문제점인 느린 연산속도(특히 for문)를 보완하기 위한 apply() 함수를 tidyverse 패키지 이념에 맞추어 직관적인 함수로 제공하는 패키지입니다. 

 

(6) 시각화 패키지, ggplot2

ggplot2 패키지는 layer 방식으로 직관적인 시각화를 제공하는 패키지입니다. 상대적으로 쉬운 문법 구조로 높은 수준의 그래프를 생성할 수 있습니다. 

 

33.3. Tidyverse 설치 및 활성화

더보기

Tidyverse는 다른 패키지와 마찬가지로, install.packages()함수로 간단하게 설치할 수 있습니다. 다만, dependencies 파라미터를 통해 의존성을 가지는 다른 패키지도 함께 설치하는 것이 좋으므로 해당 파라미터를 활용하여 설치하면 다음과 같습니다. 

install.packages('tidyverse', dependencies=TRUE)
library(tidyverse)

보시는 바와 같이 Tidyverse 패키지에 종속되어 있는 여러 패키지들이 함께 활성화됩니다. 다만 Conflicts의 내용을 살펴보면 다른 패키지의 같은 이름을 가진 함수(여기서는 filter() 함수와 lag() 함수)와 충돌될 경우, Tidyverse 패키지 내부의 함수가 우선됨을 알 수 있습니다.