[Tidy Modeling with R] 2. Tidyverse

2023. 9. 7. 19:55·Data Science/Modeling

<Tidyverse> 패키지는 데이터 분석을 위한 패키지로 R에서 정말 많이 사용됩니다.

이전 챕터에서 <Tidymodels> 패키지가 <Tidyverse> 패키지에 영감을 받아 만들어졌다고 소개했는데요.

이에 챕터 2에서는 <Tidyverse> 패키지의 철학과 어떻게 적용하는지에 대해 소개하고 있습니다.

 


1. Tidyverse Principles 

  • Design for Humans : 다양한 사람들이 쉽게 이해하고 사용할 수 있도록 설계
  • Reuse existing Data Structures : 기존에 존재하는 데이터 구조를 반환해 빠른 이해가 가능
  • Design for Pipe and Functional Programming : 파이프 라인과 함수형 프로그래밍에 적합

 

저도 처음에 맨땅에 헤딩으로 <Tidyverse> 패키지를 사용했었는데요. 

그때는 어떤 철학과 특징이 있는지 몰랐는 데 사용할수록 훌륭한 패키지라는 것을 체득하게 되었습니다.

 

우선 사용이 간단하고 직관적입니다. 

예를 들어, 문자열의 길이를 구하고자 한다면 base R 에서는 `nchar`라는 함수를 사용해야 하지만 <Tidyverse>에서는 `str_length`라는 함수를 사용합니다. 

 

그리고 탭 자동완성(Tab-completion) 기능을 활용해 함수를 쉽게 찾을 수 있습니다.

문자열 결합의 base R 함수는 `paste0` 함수이지만, <Tidyverse>에서는 `str_c`입니다. 

따라서 만약 함수명이 생각나지 않는다면 str까지 입력하고 Tab키를 눌러서 빠르게 찾을 수 있습니다.

 

또한, 데이터를 조작하는데 사용하는 주요 함수들은 데이터프레임을 입력받아, 데이터프레임을 출력한다는 특징이 있습니다.

특정열을 선택하는 `select` 함수, 새로운 열을 만드는 `mutate` 함수, 조건을 만족하는 행을 보기 위한 `filter` 함수를 포함해 많은 <dplyr>, <tidyr> 함수가 데이터프레임(티블)을 입력받아 데이터프레임(티블)을 출력합니다. 

그래서 출력값의 타입을 쉽게 예상할 수 있고 새로운 데이터 타입을 출력하지 않아 인지 부하를 줄일 수 있습니다. 

 

마지막으로 파이프 라인으로 연결하기 간단하도록 설계되었습니다.

수원지에서 물을 원하는 곳으로 이동시키기 위해서 파이프를 연결하는 것처럼 R에서 파이프는 여러 함수를 물 흐르듯 연결하는 연산자입니다.

주민번호 데이터셋에서 문자열 전처리를 수행한다고 가정해 봅시다.
(1) 앞뒤 공백 제거 (2) 문자열의 맨 마지막 문자 출력 (3) "1"이면 남자, "2"면 여자로 표시

기존에는 아래 코드와 같이 중간 결과마다 변수를 지정해 함수를 적용하거나, 함수1(함수2(함수3, ...), ...), ...)와 같이 여러 함수를 한 번에 중첩시켜야 했는데 번거롭거나 스파게티 코드가 되어버린다는 단점이 있습니다.

library(tidyverse)
jumin = c("   851201-1   ", "   940714-2   ", " 031022-4  ")

trimmed_jumin = str_trim(jumin)            # 공백제거
last_char = str_sub(trimmed_jumin, -1, -1) # 마지막 문자
case_match(
	last_char,
    c("1", "3") ~ "Men",
    c("2", "4") ~ "Women"
    )

 

하지만, 파이프를 사용하면 간단하게 표현할 수 있고 흐름도 쉽게 파악할 수 있습니다.

jumin |> 
    str_trim() |> 
    str_sub(-1) |> 
    case_match(
        c("1", "3") ~ "Men",
        c("2", "4") ~ "Women"
    )

 

기존에 R에서 파이프 연산을 위해 <magrittr> 패키지의 `%>%` 함수를 사용했었는데요, 2021년 5월 R 4.1.0 버전에서 베이스 파이프 연산자 `|>`를 출시해 이후로는 해당 연산자를 사용하고 있습니다.

 


2. Examples of Tidyverse Syntax

2절에서는 <Tidyverse> 구문 예시를 소개하는데, 요약하는건 좀 애매한 거 같아서 생략합니다.

 

2 A Tidyverse Primer | Tidy Modeling with R

The tidymodels framework is a collection of R packages for modeling and machine learning using tidyverse principles. This book provides a thorough introduction to how to use tidymodels, and an outline of good methodology and statistical practice for phases

www.tmwr.org

 

+ 2025.10 내용수정

'Data Science > Modeling' 카테고리의 다른 글

[Tidy Modeling with R] 5. 데이터 분할  (1) 2023.09.10
[Tidy Modeling with R] 4. 부동산 데이터 탐색적 분석  (1) 2023.09.10
[Tidy Modeling with R] 3. 모델링 기본 원리  (0) 2023.09.09
[Tidy Modeling with R] 1. 모델링을 위한 소프트웨어  (0) 2023.09.07
[Tidy Modeling with R] 0. 서론  (1) 2023.09.07
'Data Science/Modeling' 카테고리의 다른 글
  • [Tidy Modeling with R] 4. 부동산 데이터 탐색적 분석
  • [Tidy Modeling with R] 3. 모델링 기본 원리
  • [Tidy Modeling with R] 1. 모델링을 위한 소프트웨어
  • [Tidy Modeling with R] 0. 서론
임파카
임파카
[ML & Statistics] 모바일 버전에서 수식 오류가 있어 PC 환경에서 접속하는 것을 권장합니다.
  • 임파카
    무기의 스탯(Stat)
    임파카
  • 전체
    오늘
    어제
    • Study (151)
      • Data Science (45)
        • Modeling (18)
        • Manipulation (21)
        • Visualization (5)
      • Statistics (60)
        • Mathmetical Statistics (54)
        • Categorical DA (1)
      • Web Programming (17)
      • Marketing (0)
      • AI (26)
        • Machine Learning (16)
        • Deep Learning (10)
      • 활동 및 프로젝트 (3)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.5
임파카
[Tidy Modeling with R] 2. Tidyverse
상단으로

티스토리툴바