-
[R 기초] dplyr packageData 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. 그 외 기본이 되는 함수
* 참고문헌 : 실리콘밸리 데이터 과학자가 알려주는 따라하며 배우는 데이터 과학(저자 : 권재명)
'Data Science > Data Science in R' 카테고리의 다른 글
[Data Science] 데이터 종류에 따른 분석 기법 (0) 2018.10.25 [Data Science 기초] IMDB 영화 정보 데이터 시각화 및 분석 (0) 2018.10.24 [Data Science 기초] 데이터 시각화 응용 - 변수의 종류에 따른 시각화 (0) 2018.10.23 [R 기초] 데이터 시각화 기초 - Base R package vs. ggplot2 (0) 2018.10.23 [R 기초] Gapminder Data 분석 (0) 2018.10.09