ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [R 기초] dplyr package
    Data Science/Data Science in R 2018. 10. 9. 23:41

    목표 : dplyr 패키지에 대해 알아보자


    dplyr Package란? Data를 빨리 쉽게 가공할 수 있도록 도와주는 R Package이다. dplyr은 베이스 R 데이터 가공에 비해 다음과 같은 차이점과 장점이 있다.

    1. 코드가 읽기 쉽다. : chain 연산자(%>%) 덕분이다.

    2. 코드가 쓰기 쉽다. : 동사의 개수가 적고 문법이 간단하다.

    3. R을 사용하면 변수명이 자동 완성된다.

    4. Data frame만 처리한다. 베이스 R의 연산자들은 data frame 뿐만 아니라 vector, 행렬, 다차원 배열, 리스트에 적용된다.

    5. 문법과 접근 방법이 SQL과 비슷하다.


    1. dplyr의 동사(verb)는 다음과 같다.(여기서 df는 data frame을 의미한다.)

     - filter(df, 조건)(and slice()) : 행 선택

     - arrange(df, 변수1, 변수2, ...) : 행 정렬

     - select(df, 변수1, 변수2, ...) : 변수 / 열 선택

     - mutate(df, 타겟변수 1 = 변환, ...) : 변수 변환

     - summarize(df, 타겟변수 1 = 통계 함수, ...) : 변수 요약

     - distinct()

     - sample_n() and sample_frac()


    2. dplyr의 유용한 유틸리티 : glimpse, tbl_df(), %>%

     1) tbl_df 함수/클레스 : 아무 Data Frame에 tbl_df()를 적용하면 tbl_df Class 속성을 가지게 되고 화면에 표시하면 행과 열만 깔끔히 출력된다.


    > library(dplyr)

    > df = tbl_df(iris)

    > class(df)

    [1] "tbl_df"     "tbl"        "data.frame"

    > df

    # A tibble: 150 x 5

       Sepal.Length Sepal.Width Petal.Length Petal.Width Species

              <dbl>       <dbl>        <dbl>       <dbl> <fct>  

     1          5.1         3.5          1.4         0.2 setosa 

     2          4.9         3            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           3.6          1.4         0.2 setosa 

     6          5.4         3.9          1.7         0.4 setosa 

     7          4.6         3.4          1.4         0.3 setosa 

     8          5           3.4          1.5         0.2 setosa 

     9          4.4         2.9          1.4         0.2 setosa 

    10          4.9         3.1          1.5         0.1 setosa 

    # ... with 140 more rows


    tbl_df는 행의 개수와 열의 개수가 많은 데이터를 취급할 때 굉장히 유용하다.

    대게는 my_data_set <- tbl_df(read.csv('data_set.csv')) 이런 식으로 많이 활용된다.


     2) glimpse 함수 : Data Frame을 전치하여 모든 변수를 다 볼 수 있게 해주고, 데이터형을 나타내며, 처음 몇 데이터 값을 출력해준다.


    > df = tbl_df(gapminder)

    > glimpse(df)

    Observations: 1,704

    Variables: 6

    $ country   <fct> Afghanistan, Afghanistan, Afgha...

    $ continent <fct> Asia, Asia, Asia, Asia, Asia, A...

    $ year      <int> 1952, 1957, 1962, 1967, 1972, 1...

    $ lifeExp   <dbl> 28.801, 30.332, 31.997, 34.020,...

    $ pop       <int> 8425333, 9240934, 10267083, 115...

    $ gdpPercap <dbl> 779.4453, 820.8530, 853.1007, 8...



     3) %>% 연산자 : x %>% f(y)는 f(x,y)로 변환된다. 예제처럼 다음과 같이 활용되고 data%>%function은 function(data) 와 동일한 모습을 볼 수 있다.


    > gapminder_head = gapminder %>% head

    > gapminder_head

    # A tibble: 6 x 6

      country   continent  year lifeExp     pop gdpPercap

      <fct>     <fct>     <int>   <dbl>   <int>     <dbl>

    1 Afghanis~ Asia       1952    28.8  8.43e6      779.

    2 Afghanis~ Asia       1957    30.3  9.24e6      821.

    3 Afghanis~ Asia       1962    32.0  1.03e7      853.

    4 Afghanis~ Asia       1967    34.0  1.15e7      836.

    5 Afghanis~ Asia       1972    36.1  1.31e7      740.

    6 Afghanis~ Asia       1977    38.4  1.49e7      786.


    > gapminder_head = head(gapminder)

    > gapminder_head

    # A tibble: 6 x 6

      country   continent  year lifeExp     pop gdpPercap

      <fct>     <fct>     <int>   <dbl>   <int>     <dbl>

    1 Afghanis~ Asia       1952    28.8  8.43e6      779.

    2 Afghanis~ Asia       1957    30.3  9.24e6      821.

    3 Afghanis~ Asia       1962    32.0  1.03e7      853.

    4 Afghanis~ Asia       1967    34.0  1.15e7      836.

    5 Afghanis~ Asia       1972    36.1  1.31e7      740.

    6 Afghanis~ Asia       1977    38.4  1.49e7      786.


    3. 그 외 기본이 되는 함수


    * 참고문헌 : 실리콘밸리 데이터 과학자가 알려주는 따라하며 배우는 데이터 과학(저자 : 권재명)

    댓글

by KUKLIFE