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 변수 이름 (비구문 이름)이 아닌 열 이름을 가질 수 있습니다. 예를 들어, 문자로 시작하지 않거나 공백과 같은 비정상적인 문자를 포함할 수 있습니다. 다만, 이러한 변수를 참조하려면 백틱 (`)으로 묶어야 합니다.
# 티블은 다양한 형태의 컬럼 이름을 가질 수 있습니다.
<- tibble(
tb `:)` = "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
#
로 시작하는 주석문을 추가하면 열 제목이 있는지 명확하게 알 수 있습니다.