R 데이터 기초 통계량 확인 함수 5가지 (dplyr)

수백만 건의 방대한 쇼핑몰 혹은 물류 엑셀 데이터를 만났을 때, 분석가로서 우리가 엑셀 화면을 열고 가장 반사적으로 먼저 하는 행동은 무엇일까요? 보통 상단 탭에서 ‘필터’ 메뉴를 눌러 특정 구매 조건의 고객 데이터를 추려내고, 그 조작된 데이터를 긁어와 ‘피벗 테이블’을 만들어 그룹별 월 매출 평균이나 총합계를 빠르게 구하여 대시보드 구조에 올리는 작업일 것입니다.

R에서는 이 모든 일련의 귀찮은 마우스 노가다 변환 과정을, 엑셀 마우스 클릭이 아닌 단어 몇 개로 이뤄진 단 몇 줄의 직관적인 코드로, 엑셀 구동 엔진보다 최고 수십 배 이상 빠른 속도로 일괄 클라우드 서버에서 처리할 수 있습니다. 이미 전 세계 R 데이터 통계 분석가들의 절대적인 표준 필수 무기인 dplyr 패키지를 통해 데이터의 기초 통계량을 집계하고 요약하는 5가지 핵심 파이프라인 동사(함수)들을 실전 데이터 테이블을 활용해 직접 구조적으로 소개합니다.

설명을 위해 먼저 간단한 백화점 지점별 방문자 일일 매출 데이터를 머릿속에 생성해 두겠습니다.

library(dplyr)

# 가상의 영업 데이터를 tribble로 텍스트화하여 세팅 완료
my_data <- tribble(
  ~월, ~날짜, ~점포부서, ~통영_합계, ~타지역_합계, ~일일방문자,
  1, "1-15", "A",     100,      50,      200,
  1, "1-20", "B",     150,      80,      300,
  2, "2-10", "A",     90,       40,      150,
  2, "2-28", "A",     300,      100,     600
)

1. 변수 영역: 세로 열(Column)을 요리하는 동사들

① 메모리 절약을 위한 필수, 필요한 열만 속가내어 쏙쏙 복사 뽑아내기: select()

고객 정보가 수백 개의 열이 넘는 마스터 데이터프레임에서 잡스런 정보 다 빼고, 내가 지금 분석할 용도로 사용할 딱 3개의 유의미한 주요 센서 열(날짜, 지역방문합계 컬럼)만 가볍게 남기고 싶을 때 필수적으로 사용합니다.

# 이름이 긴 열들을 뽑거나, 혹은 starts_with("통영") 같은 보조 함수로 뭉탱이 추출도 가능!
my_data |> 
    select(날짜, 통영_합계, 타지역_합계)
> # A tibble: 4 × 3
>   날짜  통영_합계 타지역_합계
>   <chr>     <dbl>       <dbl>
> 1 1-15        100          50
> 2 1-20        150          80
> 3 2-10         90          40
> 4 2-28        300         100

② 기존 열을 혼합하여 새로운 파생 수식 방 만들기: mutate()

엑셀에서 오른쪽 빈칸에 새로운 수식을 걸어 파생 결과값을 계산(=D2+E2)한 뒤 아래로 쫙 스크롤 드래그를 걸어주듯, 코드 한 줄로 기존 열 데이터를 가공해 완전히 새로운 파생 변수(새로운 열 이름)를 우측 끝에 무한정 창조해 냅니다.

my_data |>
    mutate(총_결제합산액 = 통영_합계 + 타지역_합계)
> # A tibble: 4 × 7
>      월 날짜  점포부서 통영_합계 타지역_합계 일일방문자 총_결제합산액
>   <dbl> <chr> <chr>        <dbl>       <dbl>      <dbl>         <dbl>
> 1     1 1-15  A              100          50        200           150
> 2     1 1-20  B              150          80        300           230
> 3     2 2-10  A               90          40        150           130
> 4     2 2-28  A              300         100        600           400

2. 표의 가로 행(Row / Index) 자체를 걸러내는 검색 동사

③ 조건에 맞는 행만 핀셋으로 살려내기: filter()

엑셀 상단 헤더의 ‘데이터 깔때기 텍스트/숫자 필터’ 검색 기능과 기능 구조상 완벽히 일치합니다. 크고 작음의 부등호(>)나 고급 논리 연산자(AND &, OR |)를 복합적으로 사용하여 조건문을 만들어, 내가 원하는 소수의 특정 타겟 유저 데이터 기록 행위 행(Row)만 화면 단에 살려서 필터링해 남깁니다.

# 조건: 방문자가 무려 500명이 넘어 터졌던 매출 '초대박' 고점 날짜의 영업 행(Row)만 단독 필터링!
my_data |>
    filter(일일방문자 > 500)
> # A tibble: 1 × 6
>      월 날짜  점포부서 통영_합계 타지역_합계 일일방문자
>   <dbl> <chr> <chr>        <dbl>       <dbl>      <dbl>
> 1     2 2-28  A              300         100        600

3. 데이터 요약 통계의 꽃: 카테고리 그룹화와 압축 집계 (피벗)

사실상 이 막강한 두 가지 기능 연계 콤보들이 없었다면 굳이 엑셀을 놔두고 코딩형 플랫폼 dplyr를 쓸 이유가 없다고 세간에서 감히 단언할 정도로, 고난도 엑셀 고급 분석인 피벗 테이블(Pivot)의 직관적이고 완벽한 스크립트 상위 호환인 “그룹 묶음 집계” 메커니즘 엔진입니다.

④ 백만 개 데이터를 속성 카테고리 성격별로 투명하게 분류해 쪼개 버리기: group_by()

콘솔 화면 뷰 겉으로는 티가 나지 않고 아무런 변화 구조가 없어 보이지만, R 엔진의 뇌 속 백그라운드 메모리에서는 거대 덩어리 테이블 데이터를 사용자가 지정해준 팩터 속성 기준 변수(예: ‘월별’, ‘연령별’, ‘부서 카테고리별’) 기준으로 서랍장 박스를 여러 개 분할하여 별도로 독립시켜 잘게 찢어 쪼개어 놓는 선행 마스킹 기능입니다.

# 이 자체로는 아무 출력 요약 변화가 없지만, 다음 단계의 그룹 통계량을 구하기 위해 월별 락커룸을 내부적으로 배정 생성합니다.
my_data |>
    group_by(월)

⑤ 그룹 단위로 분할 쪼개진 락커룸 방마다 압축 통계량 자동 산출 마법!: summarise()

위를 선행한 후 group_by()와 무조건 한 몸의 세트로 연계 파이프라인으로 붙어서 강제 쓰이는 함수입니다. 그룹별 서랍으로 찢어진 하위 파편화 데이터 블록들에게 개별적으로 각각 지시한 월 평균(mean), 총월합계(sum), 해당 월의 영업 가동일 건숫자(n()) 등을 단 한 줄 문장 코드로 한 방에 계산해 내어 기존 표를 날려버리고 초압축된 깔끔한 경영 요약 통계 리포트 표로 새롭게 그려 반환해 출력합니다.

# 데이터 파이프라인을 연결! 월별로 갈라치기 쪼갠다음, 총결산 통계량을 집계 추출해!
my_data |>
    group_by(월) |>
    summarise(
        월전체_총방문자_실적 = sum(일일방문자),
        월별_일일평균_내점 = mean(일일방문자),
        기록된_영업일수_건수 = n()
    )
> # A tibble: 2 × 4
>      월 월전체_총방문자_실적 월별_일일평균_내점 기록된_영업일수_건수
>   <dbl>                <dbl>              <dbl>                <int>
> 1     1                  500                250                    2
> 2     2                  750                375                    2

보신 바와 같이 tidyverse 하에서의 위의 함수들은 개별적으로 따로따로 구문이 끊어져 단독으로 쓰이지 않습니다. 현대 데이터 가공 공학에서는 파이프 연산자(|> 혹은 구버전 %>%) 컨베이어 벨트를 통해 코드 흐름을 엮어 “원본 원시 데이터를 가져와서(|>) -> 지저분한 건 필터를 걸어 쳐내고(|>) -> 월별 카테고리 그룹으로 모아 묶은 다음(|>) -> 평균을 구해서 요약 리포트를 표로 출력하라!” 표기처럼 유기적이고 물 흐르듯 선형적으로 코드를 이어 붙여 직관적으로 전개하는 구조 모델링이 백미이자 핵심 사상입니다.

이 마법의 dplyr 기본기 작동 체계와 메커니즘만 깊이 이해하고 체화하셔도, 파이썬(Python)의 판다스(Pandas)보다도 세련된, 현존하는 R 데이터 전처리 가공의 압도적인 90% 비중의 허들을 모두 마스터하여 완성된 것과 다름없습니다!


당신이 좋아할 만한 콘텐츠

by Google Adsense


관련 글 보기