데이터 집계는 데이터베이스(DB) 언어인 SQL에서 대표적으로 많이 사용한다.
집계란, raw data의 레코드 단위를 조금 더 큰 단위로 변환할 때 필요하다.
예를 들면, 날짜별로 역별로 지하철 승하차 인원이 있다고 할 때 역별로 한달 총 승하차 인원 합계를 구한다거나 일 평균 승하차 인원을 계산하려고 할 때 집계 함수가 필요하다.
또 신용카드 결제 데이터도 구매 한 건 한 건 기록된 데이터에서 회원별로 평균 건 당 결제 금액이나 총 결제 금액 합계 등을 계산 할 때 유용하게 사용할 수 있다.
< 실습 데이터 >
2020-03-20 기준, 한국 영화 역대 박스오피스200 데이터
# data load
setwd("C:\\Users\\user\\Desktop\\data") # 파일이 위치한 디렉토리로 세팅
boxoffice <- read.csv("boxoffice_202003.csv", header=T, stringsAsFactor=F)
str(boxoffice)
View(boxoffice)
< group by 카운트 >
dplyr 패키지의 group_by 함수로 집계 단위를 지정하고
dplyr 패키지의 summarise 함수에서 집계 함수를 지정하면 된다.
- n( ) 함수는 집계 단위 별 레코스 수를 카운트 하는 것이고,
- n_distinct(컬럼명) 함수는 집계 단위 별 해당 컬럼의 유니크 값을 카운트 하는 함수이다.
library(dplyr)
boxoffice %>%
group_by(개봉연도) %>%
summarise(count = n(), # 집계단위 기준 레코드 수(박스오피스200 중 연도별 개봉영화수)
count_unique = n_distinct(대표국적)) %>% # 집계단위 기준 대표국적 개수
View()
boxoffice %>%
group_by(개봉월) %>%
summarise(count = n()) %>%
View()
< group by 합계 >
집계 단위별로 합계를 구할 때는 summarise 내에 sum( ) 함수를 사용한다.
# R에서 큰숫자는 E+05, E-05와 같이 지수표기가 원칙인데
# options(scipen=적당히 큰 숫자) 로 해결할 수 있다
options(scipen=999)
boxoffice %>%
group_by(개봉월) %>%
summarise(count = n(),
sales_sum = sum(매출액),
audience_sum = sum(관객수)) %>%
View()
boxoffice %>%
group_by(대표국적) %>%
summarise(count = n(),
sales_sum = sum(매출액)) %>%
View()
한국영화 외에는 미국영화가 한국영화시장에서 상당한 수입을 올리고 있는 것을 확인할 수 있다.
'R데이터전처리' 카테고리의 다른 글
[R-전처리] 데이터 집계함수(dplyr group_by 최빈값과 순위 계산) (0) | 2020.03.24 |
---|---|
[R-전처리] 데이터 집계 함수(dplyr group_by 그룹별 요약통계) (0) | 2020.03.23 |
[R-전처리] 데이터 프레임에서 ID에 기반한 샘플링(랜덤 추출) (0) | 2020.03.19 |
[R-전처리] 데이터 프레임에서 조건에 맞는 행 추출(dplyr filter) (0) | 2020.03.18 |
[R-전처리] 데이터 프레임에서 특정 변수 추출(dplyr select) (0) | 2020.03.17 |