3. 데이터 가공 > 3-2. dplyr 라이브러리로 가공하기
dplyr 라이브러리로 가공하기
이번 장에서는 'dplyr 라이브러리'에 대해 배워보겠습니다.
dplyr 라이브러리는 데이터 가공에 특화된 라이브러리로, R 데이터 전처리 및 가공에 가장 많이 사용됩니다. 베이스 R과 달리 filter()
, select()
등의 함수를 통해 데이터 가공을 구현하여, 작업 과정을 보다 직관적으로 이해할 수 있습니다.
install.packages('dplyr') # 라이브러리 설치
library(dplyr) # 라이브러리 로딩
library(gapminder)
filter(데이터, 조건식)
filter(gapminder, continent == 'Asia')
filter(gapminder, continent == 'Asia' & year > 2000)
select(데이터, 추출할 열 이름/식)
select(gapminder, country, pop, year) # dplyr 라이브러리
gapminder[, c('country', 'pop', 'year')] # 베이스 R
# 특정 속성(열)을 제외하고 싶은 경우
select(gapminder, !c(continent, lifeExp, gdpPercap)) # 벡터 안의 열 제외
summarise(데이터, 요약 통계함수)
summarise(gapminder, mean(pop)) # 인구수 평균
# 변수에 저장하여 추후 활용이 가능
summarise(gapminder, pop_mean = mean(pop)) # 변수명: pop_mean
📖 참고하기: 요약 통계함수 예시
함수 기능 n()
샘플(행) 개수 max(속성)
/min(속성)
최대값 / 최소값 sum(속성)
합계 mean(속성)
평균 quantile(속성)
분위수
group_by(데이터, 속성)
데이터 프레임 내 (범주형)속성을 활용해, 데이터를 그룹으로 분류한다.
보통 summarise()
와 함께 사용된다.
# 전체 데이터를 대륙으로 분류한 뒤, 대륙별 인구수 평균 구하기
summarise(group_by(gapminder, continent), pop_mean = mean(pop))
# 복수의 속성으로 그룹화할 수 있음
summarise(group_by(gapminder, continent, country), pop_mean = mean(pop))
효율적인 데이터 가공을 위해 dplyr 라이브러리에서 제공하는 연산자가 있습니다. 바로 %>%
(파이프) 연산자입니다.
%>% 연산자는 앞의 명령어 처리 결과를 다음 명령어로 전달하여, 일련의 데이터 가공 작업을 연결해 줍니다.
%>% 연산자를 사용하지 않는 경우
summarise(group_by(gapminder, continent, country), pop_mean = mean(pop))
%>% 연산자를 사용하는 경우
gapminder %>%
group_by(continent, country) %>%
summarise(pop_mean = mean(pop))
iris 데이터
로 한 번 더 비교해 봅시다.
%>% 연산자를 사용하지 않는 경우
tmp1 = filter(iris, Sepal.Length >= 5.5 & Petal.Length >= 3.5)
tmp2 = select(tmp1, Sepal.Length, Petal.Length, Species)
tmp3 = summarise(group_by(tmp2, Species),
s_avg = mean(Sepal.Length), p_avg = mean(Petal.Length))
tmp3 # 결과 출력
%>% 연산자를 사용하는 경우
iris %>%
filter(Sepal.Length >= 5.5 & Petal.Length >= 3.5) %>% # 행 추출
select(Sepal.Length, Petal.Length, Species) %>% # 열 추출
group_by(Species) %>%
summarise(s_avg = mean(Sepal.Length), p_avg = mean(Petal.Length))