비유하기
R로 데이터 핸들링을 할 때, dplyr
와 data.table
을 많이 활용합니다. 저 역시 두 가지를 모두 사용하고 있습니다. 저는 R 입문자의 입장에서 봤을 때, 이 두 패키지를 일본어와 중국어에 빗대어 설명드리고 싶습니다.
“일본어는 처음엔 쉬운데, 나중엔 갈수록 어려워져.
반대로 중국어는 처음엔 어려운데, 나중엔 쉬워져.”
중국어를 배울 때 자주 들었던 말입니다. 어문계열 출신이다보니 중국어를 배울 때 항상 일본어와 비교를 하는 말을 들었습니다. 일본어는 어순도 우리나라와 비슷하고, 애니메이션 등의 영향으로 많이 익숙하죠. 반면에 중국어는 어순도 한국어와 다르고, 무엇보다 성조도 있죠. 그래서 중국어에 대한 진입장벽이 일본어보다 더 높다고들 얘기했던 기억이 납니다.
저는 dplyr
와 data.table
의 관계가 일본어와 중국어와 비슷하다고 생각합니다.
dplyr
는 처음엔 쉽습니다. dplyr
는 함수 중심의 코드로 구성이 되어있습니다(Functional programming). 몇 개만 알면 기본적인 분석은 다 해낼 수 있습니다. 파이프 연산자를 이용해 코드를 읽어나가는 것도 더 쉽게 느낄 수 있습니다. 하지만 추가적인 작업을 하기 위해서는 여러 함수를 더 익혀야 합니다. 알아둬야하는 함수가 많아지고, 새로운 문법도 늘어납니다.
반면에 data.table
은 처음에 문법을 익히기가 어렵습니다. 기초 문법을 익힐 때, 어느 정도 난이도가 있습니다. 하지만 이 문법을 잘 이해하고 나면, 이것들을 잘 활용하기만 하면 끝입니다.
data.table
을 추천하는 이유
그렇기 때문에 처음 데이터 핸들링 패키지를 선택하라고 하면 dplyr
보다는 data.table
을 추천드립니다. dplyr
보다 data.table
을 추천드리는지 이유는 아래와 같습니다.
1. 간결함
dplyr
보다 data.table
의 코드가 더 간단합니다. 간단하다는 것은 입력하는 코드가 적은 것은 물론, 숙지해야 할 문법 (또는 함수)도 더 단순합니다.
dplyr
는 원하는 기능을 함수이름으로 설정해 놓았습니다. 그렇기 때문에 함수 자체를 익히는 것은 크게 어렵지 않습니다. 문제는 외워야 할 함수가 너무 많다는 것입니다. select()
, mutate()
, filter()
, summarise()
, filter()
, recode()
, case_when()
등등.. 익혀야 할 기본 함수들이 굉장히 많죠.
또한 여러 가지 변수를 동시에 다루는 작업이라면 더욱 복잡해집니다. ~
가 붙는 코드, .
이 붙는 코드들이 생겨나면서 처음 배우는 사람들에게는 코드를 이해하는 데 어려움이 생깁니다.
반면 data.table
안에서 기본적인 동작들은 함수가 아닌 문법을 통해 해결할 수 있습니다. []
안에서 행과 열, 그룹을 다루는 문법을 처음에 잘 익혀두면 손쉽게 사용이 가능합니다. 또한 사용하는 함수의 종류도 크게 많지 않아 dplyr
보다 쉽게 데이터를 핸들링할 수 있습니다.
2. 패키지 의존성
dplyr
는 tidyverse
라는 생태계에 속한 패키지입니다. 추가적인 동작을 사용하기 위해선 tidyr
, broom
등과 같은 패키지를 설치해야만 합니다. 어느 패키지에 어떤 함수가 있는지 알아야 하고, 필요한 패키지를 추가적으로 설치해야 합니다. 그 패키지들도 설치하려면 다른 패키지가 필요해서 필요한 패키지 이외에도 여러 패키지들을 다운로드받아야 합니다.
반면에 data.table
은 data.table
패키지 하나만 설치하면 끝이죠. 이것저것 복잡하게 패키지를 다운받을 필요없이, data.table
하나의 패키지만 설치하면 웬만한 작업은 모두 수행할 수 있습니다.
왜 dplyr
를 더 많이 쓸까?
그럼에도 불구하고, 일반적인 R 사용자들은 dplyr
를 더 많이 쓰는 것 같습니다. 여러 이유가 있겠지만, 가장 중요한 것은 아마 UI일 것입니다.
앞서 말씀드린 것처럼 data.table
의 문법은 처음에 이해하기에 쉽지 않습니다. []
, i
, j
, by
등등 처음 데이터 분석을 배우는 사람의 입장에서는 이것들을 바로 이해하는 게 쉽지 않겠죠.
dplyr
는 처음 봤을 때, 굉장히 쉽습니다. 영어 단어 몇 개만 이해하면 바로 써먹을 수 있습니다. %>%
를 통해 여러 함수들을 연결시킴으로써 직관적으로 코드가 눈에 들어올테니까요.
또한 Posit (구 RStudio) 사에서는 공식적으로 dplyr
가 있는 tidyverse
를 밀어주는 느낌이 없잖아 있습니다. tidyverse
와 관련된 내용의 강의를 제공하고 있습니다. 처음 R을 접하는 사람들에게 dplyr
로 유입되게끔 유도를 하는 것이지요.
그렇기 때문에 dplyr
의 사용자가 더 많을 것이고, 커뮤니티도 더 활성화가 되어있지 않나 생각합니다.
결론
최근 dplyr
를 다시 사용해야 할 일이 있어서 dplyr
를 공부하다가 생각을 정리하고자 작성한 글입니다.
비록 저 역시 data.table
패키지를 알기 전, dplyr
를 먼저 접하게 되었습니다. (위에서 말한 것처럼) 커뮤니티가 온통 dplyr
세상이었거든요. 하지만 저는 주류와는 다른 선택을 하고 싶었고, 그래서 data.table
을 찾아 공부했던 것 같습니다. 실제로 써보니 data.table
이 만족도가 더 높았구요.
입문자에게 data.table
을 추천하기는 했지만, 나중에는 dplyr
를 배워서, 둘 다 사용할 수 있는 것도 괜찮지 않을까요? ㅎㅎ