더북(TheBook)

다음은 아이리스 데이터 프레임을 데이터 테이블로 변환하는 예다. 데이터를 출력했을 때 전체가 화면에 출력되는 데이터 프레임과 달리 데이터의 일부만 잘려 보이는 점은 데이터 테이블의 특징이다. 더 많은 데이터를 출력하려면 iris_table[1:n, ]처럼 행 번호를 직접 지정하거나 print(dt, nrows=Inf) 명령을 사용한다.

> (iris_table <- as.data.table(iris))
     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
  1:          5.1         3.5          1.4         0.2    setosa
  2:          4.9         3.0          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.0         3.6          1.4         0.2    setosa
---
146:          6.7         3.0          5.2         2.3 virginica
147:          6.3         2.5          5.0         1.9 virginica
148:          6.5         3.0          5.2         2.0 virginica
149:          6.2         3.4          5.4         2.3 virginica
150:          5.9         3.0          5.1         1.8 virginica

다음은 데이터 테이블을 직접 생성하는 예다.

> (x <- data.table(x=c(1, 2, 3), y=c("a", "b", "c")))
   x y
1: 1 a
2: 2 b
3: 3 c

이 절의 시작 부분에서 언급한 것처럼 데이터 테이블은 데이터 프레임과 동일하게 취급된다. 다음 코드는 데이터 테이블의 클래스가 data.frame을 포함하고 있음을 보여준다. 클래스가 data.frame을 포함하므로 summary, print, plot 등의 데이터 프레임을 처리하는 함수들이 데이터 테이블에도 동일하게 동작한다. 다시 말해, data.frame을 인자로 기대하는 함수에 데이터 테이블을 넘겨도 많은 경우 별 문제없이 동작한다. 만약 예외적으로 잘 동작하지 않는 함수가 있다면 as.data.frame( )을 사용해 데이터 테이블을 데이터 프레임으로 변환하면 된다.

> class(data.table())
[1] "data.table" "data.frame"

이렇게 만든 데이터 테이블들의 목록은 tables( )로 열람할 수 있다.

> iris_table <- as.data.table(iris)
> x <- data.table(x=c(1, 2, 3), y=c("a", "b", "c"))
> tables()
     NAME      NROW MB
[1,] iris_table 150 1 
[2,] x            3 1
     COLS                                                      KEY
[1,] Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Species
[2,] x,y
Total: 2MB
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.