ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [R] dplyr 패키지로 데이터 전처리 하기(1)
    Data Analysis/R 2022. 12. 14. 13:00
    반응형

    dplyr 패키지 : 데이터 전처리 작업에 가장 많이 사용

     

    dplyr 주요함수
    dplyr 함수 기능
    filter() 행 추출
    select() 열 (변수) 추출
    arrange() 정렬
    mutate() 변수 추가
    summarise() 통계치 산출
    group_by() 집단별로 나누기
    left_join() 데이터 병합 (열)
    bind_rows() 데이터 병합 (행)

     

    조건을 만족하는 데이터 추출

     

    filter() : 원하는 조건을 만족하는 데이터만 추출하고 싶을 때 사용하는 함수

    #데이터 불러오기
    data <- iris
    data
    head(data)
      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
    1          5.1         3.5          1.4         0.2  setosa
    2          4.9         3.0          1.4         0.2  setosa
    3          4.7         3.2          1.3         0.2  setosa
    4          4.6         3.1          1.5         0.2  setosa
    5          5.0         3.6          1.4         0.2  setosa
    6          5.4         3.9          1.7         0.4  setosa

     

    library(dplyr)
    
    data %>% filter(Sepal.Length == 5)
       Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
    1             5         3.6          1.4         0.2     setosa
    2             5         3.4          1.5         0.2     setosa
    3             5         3.0          1.6         0.2     setosa
    4             5         3.4          1.6         0.4     setosa
    5             5         3.2          1.2         0.2     setosa
    6             5         3.5          1.3         0.3     setosa
    7             5         3.5          1.6         0.6     setosa
    8             5         3.3          1.4         0.2     setosa
    9             5         2.0          3.5         1.0 versicolor
    10            5         2.3          3.3         1.0 versicolor

    Sepal.Length 값이 5인 행을 추출한 결과이다.

    == 은 같다 이고, 같지 않다를 표현하고 싶으면 != 를 작성하면 된다.

     

     

    여러 조건 지정  : | , &

    data %>% filter(Sepal.Length > 5 | Sepal.Width <= 1) #여러 조건
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
    1            5.1         3.5          1.4         0.2     setosa
    2            5.4         3.9          1.7         0.4     setosa
    3            5.4         3.7          1.5         0.2     setosa
    4            5.8         4.0          1.2         0.2     setosa
    5            5.7         4.4          1.5         0.4     setosa
                               (...생략...)

    | 혹은 &로 조건을 연결해주면 여러개의 조건을 지정할 수 있다.

     

     

     원소 여부 : %in%

    data %>% filter(Sepal.Length %in% c(5.2, 5.6, 7.7))
       Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
    1           5.2         3.5          1.5         0.2     setosa
    2           5.2         3.4          1.4         0.2     setosa
    3           5.2         4.1          1.5         0.1     setosa
    4           5.2         2.7          3.9         1.4 versicolor
    5           5.6         2.9          3.6         1.3 versicolor
    6           5.6         3.0          4.5         1.5 versicolor
    7           5.6         2.5          3.9         1.1 versicolor
    8           5.6         3.0          4.1         1.3 versicolor
    9           5.6         2.7          4.2         1.3 versicolor
    10          7.7         3.8          6.7         2.2  virginica
    11          7.7         2.6          6.9         2.3  virginica
    12          5.6         2.8          4.9         2.0  virginica
    13          7.7         2.8          6.7         2.0  virginica
    14          7.7         3.0          6.1         2.3  virginica

    %in%를 사용하면 코드작성이 훨씬 간결해진다.

     

     

    연산자를 사용하여 조건을 지정하여 원하는 데이터 추출이 가능하다.

     

    R에서 사용하는 연산자
    논리 연산자 기능 산술 연산자 기능
    < 작다 + 더하기
    <= 작거나 같다 - 빼기
    > 크다 * 곱하기
    >= 크거나 같다 / 나누기
    == 같다 ^ , ** 제곱
    != 같지 않다 %/% 나눗셈의 목
    | 또는 %% 나눗셈의 나머지
    & 그리고    
    %in% 매칭 확인    

     

    필요 변수 추출

     

     select() : 데이터에 포함된 여러 변수들 중 일부 변수만 추출하고자 할 때 사용하는 함수

    data %>% select(Species, Sepal.Length)
           Species Sepal.Length
    1       setosa          5.1
    2       setosa          4.9
    3       setosa          4.7
    4       setosa          4.6
    5       setosa          5.0

    ◼ 특정 변수만 제거

    data %>% select(-Species)
       Sepal.Length Sepal.Width Petal.Length Petal.Width
    1            5.1         3.5          1.4         0.2
    2            4.9         3.0          1.4         0.2
    3            4.7         3.2          1.3         0.2
    4            4.6         3.1          1.5         0.2
    5            5.0         3.6          1.4         0.2

     

    함수 조합하기
    data %>% 
      filter(Sepal.Length == 5.5) %>% 
      select(Species)
          Species
    1     setosa
    2     setosa
    3 versicolor
    4 versicolor
    5 versicolor
    6 versicolor
    7 versicolor

    ◼ 일부만 출력 : head

    #일부만 출력
    data %>% 
      filter(Sepal.Length == 5.5) %>% 
      select(Species) %>%
      head(5)
         Species
    1     setosa
    2     setosa
    3 versicolor
    4 versicolor
    5 versicolor

     

    순서대로 정렬

    오름차순 정렬

    data %>% 
      arrange(Sepal.Length) %>%
      head
      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
    1          4.3         3.0          1.1         0.1  setosa
    2          4.4         2.9          1.4         0.2  setosa
    3          4.4         3.0          1.3         0.2  setosa
    4          4.4         3.2          1.3         0.2  setosa
    5          4.5         2.3          1.3         0.3  setosa
    6          4.6         3.1          1.5         0.2  setosa

     

    내림차순 정렬

    #내림차순 정렬
    data %>% 
      arrange(desc(Sepal.Length)) %>%
      head
      Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
    1          7.9         3.8          6.4         2.0 virginica
    2          7.7         3.8          6.7         2.2 virginica
    3          7.7         2.6          6.9         2.3 virginica
    4          7.7         2.8          6.7         2.0 virginica
    5          7.7         3.0          6.1         2.3 virginica
    6          7.6         3.0          6.6         2.1 virginica

     

    ◼ 여러 정렬기준

     

    data%>%
      arrange(Sepal.Length, Sepal.Width) %>%
      head
      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
    1          4.3         3.0          1.1         0.1  setosa
    2          4.4         2.9          1.4         0.2  setosa
    3          4.4         3.0          1.3         0.2  setosa
    4          4.4         3.2          1.3         0.2  setosa
    5          4.5         2.3          1.3         0.3  setosa
    6          4.6         3.1          1.5         0.2  setosa

    변수명을 나열하게되면 여러 개의 정렬 기준을 적용할 수 있다.

    먼저, Sepal.Length를 기준으로 오름차순 정렬을 한 후 Sepal.Width를 기준으로 오름차순 정렬하게 된다.

     

    반응형

    댓글

Designed by Tistory.