1 tibble의 탄생 1

아마도 수십년동안 data.frame()을 사용하다가 똑똑한 사용자 및 개발자가 불필요한 것은 덜어내고 필요한 사항을 집약시킨 것이 tibble() 자료구조다. tibbletidyverse 생태계를 구성하는 한 멤버로 tidyverse를 설치하게 되면 즉시 활용할 수 있다. 데이터프레임을 생성하고, 강제변환시키고, 외부 데이터를 데이터프레임으로 가져오는 방법에 사용되는 함수를 비교하면 다음과 같다.

작업유형 데이터프레임 명령어 티블 명령어
생성 data.frame() data_frame(), tibble(), tribble()
강제변환 (Coercion) as.data.frame() as_tibble()
데이터 불러오기 read.*() read_delim(), read_csv(), read_csv2(), read_tsv()

1.1 생성

data.frame() 함수를 사용해서 데이터프레임을 생성시킬 수 있지만, tibble(), tribble() 함수를 사용해서 좀더 직관적으로 데이터프레임을 생성시킬 수 있다.

데이터프레임(data.frame)

data.frame(a = 1:5, b = letters[1:5])  
  a b
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e

티블(tibble)

a_value <- 1:5
b_value <- letters[1:5]

tibble(a = a_value, b = b_value)
# A tibble: 5 x 2
      a b    
  <int> <chr>
1     1 a    
2     2 b    
3     3 c    
4     4 d    
5     5 e    
tribble( ~a, ~b, 
       #---|----
          1, "a", 
          2, "b")
# A tibble: 2 x 2
      a b    
  <dbl> <chr>
1     1 a    
2     2 b    

1.2 강제변환 (Coercion)

as_data_frame(),as_tibble() 함수를 사용해서 기존 data.frame 객체를 tibble 객체로 강제변환 시킬 수 있다. 물론, 리스트, 배열, 벡터 등도 티블로 변환시키는 것이 가능하다. as_data_frame()은 일정 시간을 둔 후에 as_tibble()로 일원화 될 것이다.

as_data_frame() 함수

df <- data.frame(a = 1:5, b = letters[1:5])

as_data_frame(df)
# A tibble: 5 x 2
      a b    
  <int> <fct>
1     1 a    
2     2 b    
3     3 c    
4     4 d    
5     5 e    

티블(tibble)

as_tibble(df)
# A tibble: 5 x 2
      a b    
  <int> <fct>
1     1 a    
2     2 b    
3     3 c    
4     4 d    
5     5 e    

1.3 외부 데이터 가져오기 (importing)

.csv 파일 변수명이 흥미롭게 된 파일데이터를 기존 read.csv() 함수와 read_csv() 함수로 각각 불러오는 경우를 비교하여 보자. read_csv()가 원본 데이터를 깔끔하게 가져올 뿐만 아니라 속도도 빠르다.

file_url <- "https://gist.githubusercontent.com/theoroe3/8bc989b644adc24117bc66f50c292fc8/raw/f677a2ad811a9854c9d174178b0585a87569af60/tibbles_data.csv"

read_lines(file_url)
[1] "<-,8,%,name" "1,2,0.25,t"  "2,4,0.25,h"  "3,6,0.25,e"  "4,8,0.25,o" 

read.csv() 함수 → 데이터프레임

file_url <- "https://gist.githubusercontent.com/theoroe3/8bc989b644adc24117bc66f50c292fc8/raw/f677a2ad811a9854c9d174178b0585a87569af60/tibbles_data.csv"

read.csv(file_url)
  X.. X8   X. name
1   1  2 0.25    t
2   2  4 0.25    h
3   3  6 0.25    e
4   4  8 0.25    o

read_csv() 함수 → 데블

read_csv(file_url)
# A tibble: 4 x 4
   `<-`   `8`   `%` name 
  <dbl> <dbl> <dbl> <chr>
1     1     2  0.25 t    
2     2     4  0.25 h    
3     3     6  0.25 e    
4     4     8  0.25 o    

1.4 10줄 한계 넘어서기

options() 함수에 tibble.print_min =, tibble.print_max = 인자를 조절하여 콘솔창에 출력되는 티블 관측점 갯수를 조절할 수 있다.

최소 10줄

options(tibble.print_max = 20, tibble.print_min = 10)
tibble(a = 1:26, b = letters) 
# A tibble: 26 x 2
       a b    
   <int> <chr>
 1     1 a    
 2     2 b    
 3     3 c    
 4     4 d    
 5     5 e    
 6     6 f    
 7     7 g    
 8     8 h    
 9     9 i    
10    10 j    
# ... with 16 more rows

** 최소 3줄**

options(tibble.print_max = 5, tibble.print_min = 3)
tibble(a = 1:26, b = letters) 
# A tibble: 26 x 2
      a b    
  <int> <chr>
1     1 a    
2     2 b    
3     3 c    
# ... with 23 more rows