학습관점에서 비교하는 dplyr과 data.table

처음 배우는 사람에게 추천하는 패키지
data.table
dplyr
R
Published

February 27, 2023

비유하기

R로 데이터 핸들링을 할 때, dplyrdata.table을 많이 활용합니다. 저 역시 두 가지를 모두 사용하고 있습니다. 저는 R 입문자의 입장에서 봤을 때, 이 두 패키지를 일본어와 중국어에 빗대어 설명드리고 싶습니다.

“일본어는 처음엔 쉬운데, 나중엔 갈수록 어려워져.

반대로 중국어는 처음엔 어려운데, 나중엔 쉬워져.”

중국어를 배울 때 자주 들었던 말입니다. 어문계열 출신이다보니 중국어를 배울 때 항상 일본어와 비교를 하는 말을 들었습니다. 일본어는 어순도 우리나라와 비슷하고, 애니메이션 등의 영향으로 많이 익숙하죠. 반면에 중국어는 어순도 한국어와 다르고, 무엇보다 성조도 있죠. 그래서 중국어에 대한 진입장벽이 일본어보다 더 높다고들 얘기했던 기억이 납니다.

저는 dplyrdata.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. 패키지 의존성

dplyrtidyverse라는 생태계에 속한 패키지입니다. 추가적인 동작을 사용하기 위해선 tidyr, broom 등과 같은 패키지를 설치해야만 합니다. 어느 패키지에 어떤 함수가 있는지 알아야 하고, 필요한 패키지를 추가적으로 설치해야 합니다. 그 패키지들도 설치하려면 다른 패키지가 필요해서 필요한 패키지 이외에도 여러 패키지들을 다운로드받아야 합니다.

반면에 data.tabledata.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를 배워서, 둘 다 사용할 수 있는 것도 괜찮지 않을까요? ㅎㅎ

Back to top