R로 데이터 분석할 때 dplyr가 정말 유용합니다. 예를 들어, dplyr를 쓰면 for loop를 쓸 일이 거의 없어요.
그럼 기본적인 사용법을 볼까요.
dplyr 패키지를 인스톨하고 (install.packages("dplyr")), 라이브러리를 불러줍니다.
> library(dplyr)
data frame을 하나 만들어봅시다.
> df <- data.frame(name=c('Alice', 'Brian', 'Chris'), age=c(10, 20, 30), height=c(5.2, 5.7, 6)) > df name age height 1 Alice 10 5.2 2 Brian 20 5.7 3 Chris 30 6.0
dplyr에서는 %>% 라는 "파이프"를 사용하는데요, 파이프를 사용하면 왼쪽의 결과물이 자동으로 오른쪽 함수의 input이 됩니다.
예를 들어, dplyr의 filter()라는 함수는 row를 선택할 때 사용합니다. Alice의 데이타를 보려면,
> filter(df, name == 'Alice')
name age height
1 Alice 10 5.2
> df %>% filter(name == 'Alice')
name age height
1 Alice 10 5.2
파이프 %>% 왼쪽에 있는 df가 오른쪽에 있는 filter()함수의 input이 되는 것입니다.
dplyr에서 많이 쓰이는 select()라는 함수는 column선택할 때 사용됩니다. name, age, height의 세 개의 컬럼 중에서, name과 age만 보고 싶다면,
> select(df, name, age)
name age
1 Alice 10
2 Brian 20
3 Chris 30
파이프로는
> df %>% select(name, age)
name age
1 Alice 10
2 Brian 20
3 Chris 30
여기서도 df가 select()함수의 input으로 들어간 것입니다.
만약 이름이 Alice가 몇 살인지 알고 싶다면, 위의 두 함수를 한 번 씩 적용하면 되겠죠.
> df1 <- filter(df, name == 'Alice') > select(df1, name, age) name age 1 Alice 10
먼저 filter한 다음에 그 결과물을 df1에 잠시 저장한 다음 select했는데요. 이렇게 함수를 순차적으로 사용할 때, 파이프의 장점이 드러납니다.
왜냐하면 파이프의 왼쪽의 결과물이 오른쪽 함수의 input이 되니까요.
> df %>% filter(name == 'Alice') %>% select(name, age)
name age
1 Alice 10
이렇게 파이프를 사용하면, 중간에 df1을 따로 만들 필요가 없어요. 처음 filter()함수의 결과물이 select()함수의 input으로 들어간 것입니다.
그리고 위의 예제에서 보이는 것처럼, 어떤 순서대로 뭘 했는지 그 흐름대로 읽을 수 있으니 나중에 봤을 때에도 이해하기 편하죠.
여기까지가, dplyr의 기본적인 사용 방법 입니다.
(dplyr의 다양한 함수들은 https://dplyr.tidyverse.org 에서 찾아볼 수 있습니다.)