11.1 티블 생성

11.1.1 데이터 프레임을 티블로 변환하기

대부분의 다른 R 패키지는 일반 데이터 프레임을 사용하고 있습니다. 따라서 여러분은 이러한 데이터 프레임을 티블로 as_tibble() 함수를 사용하여 강제 변환할 수 있습니다. 예를 들어 R에 내장되어 있는 iris 데이터 세트는 데이터 프레임을 구조를 가지고 있는데, as_tibble() 함수로 이 데이터 세트를 티블로 변환할 수 있습니다.

# iris 데이터 세트를 티블로 변환할 수 있습니다. 
as_tibble(iris)
## # 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

11.1.2 tibble() 함수

tibble() 함수를 사용하여 개별 벡터를 이용하여 새 티블을 생성할 수도 있습니다. 이 때 tibble()은 길이가 1 인 벡터 요소에 대해서는 입력을 자동 반복으로 재활용하고 아래와 같이 티블을 생성하면서 그 구조 안에 정의하고 있는 변수를 참조할 수도 있습니다.

# tibble() 함수를 이용하여 x, y, z 세 개의 컬럼으로 구성되는 티블을 생성합니다.
tibble(
  x = 1:5,                    # 1번째 컬럼 : x
  y = 1,                      # 2번째 컬럼 : y (길이가 1입니다 - 다른 컬럼의 요소 길이에 맞춰 자동반복됩니다.)
  z = x ^ 2 + y               # 3번째 컬럼 : z (앞의 x와 y를 참조하고 있습니다)
)
## # A tibble: 5 x 3
##       x     y     z
##   <int> <dbl> <dbl>
## 1     1     1     2
## 2     2     1     5
## 3     3     1    10
## 4     4     1    17
## 5     5     1    26

이미 data.frame()에 익숙하겠지만, tibble()은 입력 유형을 절대로 변경시키지 않습니다. 예를 들어, 문자열을 요인(factor)으로 변환하지 않습니다!. 그리고 컬럼의 이름도 변경시키지 않습니다. 행의 이름도 생성하지 않습니다.

티블에 유효한 R 변수 이름 (비구문 이름)이 아닌 열 이름을 가질 수 있습니다. 예를 들어, 문자로 시작하지 않거나 공백과 같은 비정상적인 문자를 포함할 수 있습니다. 다만, 이러한 변수를 참조하려면 백틱 (`)으로 묶어야 합니다.

# 티블은 다양한 형태의 컬럼 이름을 가질 수 있습니다.
tb <- tibble(
       `:)` = "smile", 
       ` ` = "space",
       `2000` = "number"
)

tb
## # A tibble: 1 x 3
##   `:)`  ` `   `2000`
##   <chr> <chr> <chr> 
## 1 smile space number

11.1.3 tribble() 함수

ggplot2, dplyr 그리거 tidyr 등과 같은 다른 패키지에서 이러한 변수로 작업하려면 백틱을 사용해야 합니다.

티블을 생성하는 또 다른 방법은 transposed tibble의 줄임말인 tribble() 함수를 사용하는 것입니다. tribble() 함수는 코드의 데이터 입력에 맞게 사용자 정의됩니다. 열 제목은 수식으로 정의되고(즉,~로 시작), 데이터 항목은 쉼표로 구분됩니다. 이를 통해 적은 양의 데이터를 읽기 쉬운 형식으로 배치할 수 있습니다.

# tribble() 함수를 이용하여 티블을 생성할 수 있습니다.
tribble(
  ~x, ~y, ~z,                     # 열 제목을 정의합니다. (열제목은 ~ 기호로 시작합니다.)
  #--|--|----                     # 주석문입니다.
  "a", 2, 3.6,                    # 데이터 행입니다. 각 항목은 쉽표(,)로 구분합니다.
  "b", 1, 8.5
)
## # A tibble: 2 x 3
##   x         y     z
##   <chr> <dbl> <dbl>
## 1 a         2   3.6
## 2 b         1   8.5

#로 시작하는 주석문을 추가하면 열 제목이 있는지 명확하게 알 수 있습니다.