R의 dplyr 함수 및 사용방법 알아보기

2019. 4. 3. 07:06

예전에 누군가 ETL이라고 해서 굉장히 어려운 IT용어인줄 알았다. ETL은 Extract, Transform, Load의 약자로 데이터를 추출하고 변화하여 불러오는 작업을 말한다고 한다. 데이터 베이스 이용의 한 과정이라고 하는데, 아무튼 데이터를 가지고 가장 많이 하는 작업이 데이터 불어와서 가공하고 저장하는 작업이 아닐가 한다.

데이터 가공이 시간도 많이 필요하고 자주 하는 작업인만큼, 빠르고 쉽게 하기 위한 문법도 많고 패키지도 다양하다. SQL이 어느 곳에서 많이 사용하기는 하지만, R에서는 dplyr이 가장 유명하고 효율적인 패키지로 알려져 있다.

오늘은 dplyr의 함수 및 사용방법에 대해서 알아보고자 한다.


dplyr



dplyr은 크게 5가지의 함수로 이루어져 있다. 예제의 df는 데이터 프레임이고, co1,col2등은 칼럼이다.

함수 이름

내 용

예제

select

열선택

 - select( df, col1, col2 )
 - select( df, -col3 )
 - select( df , A:Z, contains("TAXI"), contains("Delay") )

filter

행조건

 - filter( select(A,B,C), c==60 )
 - filter( df, 조건1, 조건2)  :  조건1 and 조건2
 - filter( df, 조건1 | 조건2)  :  조건1 or 조건2

 mutate

 신규 칼럼 생성

 - mutate( a = b + c ) 

 group_by

그룹핑

 - 

 summarize

 요약값

 - 


앞자를 따서 외우면 쉽다고 해서 sfmgs로 외워보기로 했다. 각각의 영어 단어의 뜻이 어떤 작업을 하는지 의미하기 때문에 영어단어만 알면 작업하기 어렵진 않을 듯 하다.

그리고 헷갈리는 것 중에 하나가 칼럼명에 따옴표를 넣어야 하는지 말지이다. dplyr은 칼럼명에 따옴표를 넣지 않는다. 이게 헷갈렸는데, 플라이(fly)니까 따옴표를 날려 버렸다고 생각해보기로 했다.


dplyr은 위와 같이 사용해도 되지만 파이프라인 %>% 을 이용하면 이해하기가 더 쉽다. 파이프라인은 앞에 작업이 끝나면 다음 작업으로 간다는 것으로 이해하면 알기 쉽니다.

  df %>%
    select ~ %>%
    filter ~%>%
    group_by %>%
    summarize


예를 들어 위와 같이 작성하면, df에서 칼럼을 선택하고 조건을 필터한 다음에 그룹핑을 해서 요약값을 만드는 것이다. 몇 번 사용해보면 흐름이 직관적이기 때문에 이해하기가 쉽다. %>%을 입력하기가 어려운데, 이는 단축키를 사용하면 된다. R Studio의 단축키는 아래 포스팅을 참조해보자.
( 참조: R Studio 단축키 BEST3 )


위의 함수가 기본 함수라고 애기는 했지만, 실제 사용하다보면 필요한 기능들이 더 있다. 이에 추가함수나 사용 예제들을 추가해보았다.


필요 작업

함수

설명과 예제

group 단위 순위매기기

row_numer

  temp3 <- temp2 %>%
      mutate( rank=row_number() ) %>% 
      group_by( group_new )

  row_number는 행의 순서를 리턴해주는 함수인데, 위와 같이 사용해서 그룹단위 순위를 매길 수 있다.

NA값 제거

is.na

  df %>%
      filter( !is.na(a) )

정렬

arrange

  job_nodup -> job_nodup %>%
      arrange( col1, desc(col2) )  

중복제거

distinct

  df %>%
    distinct( col1, col2 )

 행갯수 세기

 tally

   df %>%
      filter( col1 == "A" ) %>%
      tally()



문법이라는 게 자주 사용하다보면 자연스럽게 익숙해는데 억지로 외우려니 힘든 부분이 있다. 우선 이렇게 이해해보고 이것저것하다보면 더 빠르게 익힐 수 있지 않을까 한다. 빠른 시간에 R을 배워서 하려고 하니 고민이 많아진다. dplyr이 사용하기 어렵다면, data.table의 함수를 사용해도 좋다. data.table의 함수가 궁금하다면 아래 포스팅을 참조해보자.
( 참조: R의 data.table 패키지 사용법을 알아보자 )



오늘은 이렇게 dplyr의 함수 및 사용방법에 대해서 알아보았다. 무엇보다 많이 자주 사용하는 것이 숙달되는 데 가장 좋겠지만, 어떤 일이든 시간이 문제인 듯 하다. R에서 데이터 가공할 때 좋은 팁이 있다면 댓글로 남겨 주면 좋겠다.


오픈API를 사용하면 다양한 재미있는 일들을 해 볼 수 있다. 파이썬을 활용한 오픈API 사용이 궁금하다면 아래 글을 참조해보자.
(참조: 오픈API를 활용한 사례는 어떤 것들이 있을까?)


댓글()