歡迎加入本課程!

R 的 data.table 資料操作

Matt Dowle and Arun Srinivasan

Instructors, DataCamp

什麼是 data.table?

  • 加強版的 data.frame
    • 繼承並擴充 data.frame
  • 欄式資料結構
  • 每個欄位長度需相同,型別可不同
R 的 data.table 資料操作

為何使用 data.table?

  • 簡潔且一致的語法
    • rowscolumnsgroups 思考
    • 各自都有對應的佔位符
# General form of data.table syntax
DT[i, j, by]
   |  |  |
   |  |  --> grouped by what?
   |  -----> what to do?
   --------> on which rows?
R 的 data.table 資料操作

benchmark

R 的 data.table 資料操作

為何使用 data.table?

R 的 data.table 資料操作

建立 data.table

建立 data.table 的三種方式:

  • data.table()
  • as.data.table()
  • fread()
R 的 data.table 資料操作

建立 data.table

library(data.table)
x_df <- data.frame(id = 1:2, name = c("a", "b"))
x_df
id name
 1    a
 2    b
x_dt <- data.table(id = 1:2, name = c("a", "b"))
x_dt
id name
 1    a
 2    b
R 的 data.table 資料操作

建立 data.table

y <- list(id = 1:2, name = c("a", "b"))
y
$id
1 2
$name
"a" "b"
x <- as.data.table(y)
x
id name
 1    a
 2    b
R 的 data.table 資料操作

data.table 與 data.frame(I)

由於 data.table 就是 data.frame 的一種……

x <- data.table(id = 1:2, 
                name = c("a", "b"))
x
id name
 1    a
 2    b
class(x)
"data.table" "data.frame"
R 的 data.table 資料操作

data.table 與 data.frame(II)

查詢 data.frame 的函式,也適用於 data.table。

nrow(x)
2
ncol(x)
2
dim(x)
2 2
R 的 data.table 資料操作

data.table 與 data.frame(III)

data.table 不會自動把字元欄轉為因子。

x_df <- data.frame(id = 1:2, name = c("a", "b"))
class(x_df$name)
"factor"
x_dt <- data.table(id = 1:2, name = c("a", "b"))
class(x_dt$name)
"character"
R 的 data.table 資料操作

data.table 與 data.frame(IV)

不設定、也不需要、也不使用「列名稱」。

rownames(x_dt) <- c("R1", "R2")
x_dt
   id name
1:  1    a
2:  2    b
R 的 data.table 資料操作

一起來練習吧!

R 的 data.table 資料操作

Preparing Video For Download...