public bigdata

R4DS (R FOR DATASCIENCE) 7장 tibble로 하는 티블 본문

R programming/R4DS (R for DataScience)

R4DS (R FOR DATASCIENCE) 7장 tibble로 하는 티블

public bigdata 2019. 12. 23. 22:51

7.1

1) 티블은 사실은 데이터프레임이지만, 오래된 동작들을 수정한 객체이다.

2) tidyverse의 작업을 약간 쉽게 만들어주는 고집 있는 데이터프레임을 제공

3) tibble은 입력의 유형을 절대로 변경하지 않는다 Ex. character --> factor

4) 변수의 이름을 바꾸거나 행 이름을 생성하지 않는다.

5) tibble은 R 변수명으로 유효하지 않은 이름도 열 이름으로 가질 수 있다.(단. 이 변수들을 참조하려면 역따옴표 `로 감싸야 한다.)

3) 더 자세히 배우려면 vignette("tibble")을 이용하면 된다.

 

7.2

1) as_tibble : 일반적인 데이터프레임을 티블로 강제 변환

2) tibble : data.frame과 같은 tibble을 생성하는 함수

3) tribble : 아래 참조, 적은양의 데이터를 읽기 쉬운 형태로 배치하여 생성이 필요한 경우

tribble(
  ~x,~y,~z,
  #--|--|----
  "a", 2, 3.6,
  "b", 1, 2.5
)

7.3

티블은 데이터프레임을 화면 출력할 때 일부만 출력되도록 설정되어 있다. 이를 컨트롤 하는 방법은 아래와 같다

1) print : n, widht=Inf를 설정해 주면 모든 열과 원하는 행 수만큼 출력할 수 있다.

2) option : 기본 옵션을 지정하여 기본 출력 동작을 제어할 수도 있다. 

options(tibble.print_max = n, tibble.print_min = m) # m행 이상인 경우, n행만 출력
options(dplyr.print_min = Inf) # 모든 행을 항상 출력
options(tibble.width = Inf) # 화면 너비와 상관없이 항상 모든 열을 출력

3) package?tibble 를 통해서 tibble 패키지에 대해서 자세한 내용을 알 수 있다.

 

7.3.2 서브셋 하기

$, [[ 을 파이프에서 사용하는 방법

## 방법 1 ##
iris %>% 
  .$Sepal.Width
## 방법 2 ## 
iris %>% 
  .[["Sepal.Width"]]
## 방법 3 ##
iris %>% 
  `[[`("Sepal.Width")
## 방법 4 ##
iris %>% 
  `$`("Sepal.Width")
## 방법 5 ##
iris %>% 
  `$`(Sepal.Width)

7.4

티블은 주로 filter, select 함수를 통해 서브셋을 하는데 데이터프레임은 []을 통해서 서브셋을 주로 한다. 그런데 베이스R의 []은 어떨 때는 데이터프레임을 반환하고, 또 어떨 때는 벡터를 반환하는데 반해 티블에서 []는 항상 다른 티블을 반환하도록 되어 있다.

 

7.4.1 연습문제

1) 어떤 객체가 티블인지 알 수 있는 방법

  • 출력해 본다
  • is_tibble()
  • class

2) pass

3) pass

5) tibble::enframe은 어떤 동작을 하는가?

이름있는 벡터, 또는 리스트를 티블형태로 변경해 준다.(전처리 하다 보면 은근히 많이 사용하는 함수)

> enframe(1:3)
# A tibble: 3 x 2
   name value
  <int> <int>
1     1     1
2     2     2
3     3     3
> enframe(c(a = 5, b = 7))
# A tibble: 2 x 2
  name  value
  <chr> <dbl>
1 a         5
2 b         7
> enframe(list(one = 1, two = 2:3, three = 4:6))
# A tibble: 3 x 2
  name  value    
  <chr> <list>   
1 one   <dbl [1]>
2 two   <int [2]>
3 three <int [3]>

6) 티블의 바닥글에 출력되는 열 이름의 개수를 제어하는 옵션은 무엇인가?

print(티블, n_extra)  예시를 돌려보니 이게 잘 되는지 모르겠다. 몰라도 된다.