轉換 data.table 格式

R 的 data.table 資料合併

Scott Ritchie

Postdoctoral Researcher in Systems Genomics

將長格式 data.table 轉寬

sales_wide <- dcast(sales_long, quarter ~ year, value.var = "amount")

R 的 data.table 資料合併

`dcast()` 函式

dcast() 的一般形式:

dcast(DT, ids ~ group, value.var = "values")
      |   |     |                   |
      |   |     |                    --> 要拆分的欄
      |   |      ----------------------> 依此分組的標籤
      |    ----------------------------> 保留為識別欄的列
       --------------------------------> 要重塑的 data.table            
R 的 data.table 資料合併

`dcast()` 函式

sales_wide <- dcast(sales_long, quarter ~ year, value.var = "amount")

R 的 data.table 資料合併

拆分多個數值欄

dcast(profit_long, quarter ~ year, value.var = c("revenue", "profit"))

R 的 data.table 資料合併

多個列識別欄

保留多個識別欄作為列索引:

dcast(sales_long, quarter + season ~ year, value.var = "amount")

R 的 data.table 資料合併

移除未用欄位

只有公式或 value.var 中包含的欄會出現在結果中:

sales_wide <- dcast(sales_long, quarter ~ year, value.var = "amount")

R 的 data.table 資料合併

多重分組

依多個分組欄拆分:

dcast(sales_long, quarter ~ department + year, value.var = "amount")

R 的 data.table 資料合併

轉成矩陣

sales_wide <- dcast(sales_long, season ~ year, value.var = "amount")
sales_wide
   season    2015    2016
1: Autumn 3420000 3670000
2: Spring 2950000 3000300
3: Summer 2980700 3120200
4: Winter 3200100 3350000
R 的 data.table 資料合併

轉成矩陣

as.matrix() 可以取其中一欄作為矩陣的列名稱:

mat <- as.matrix(sales_wide, rownames = "season")
mat
       2015    2016        
Autumn 3420000 3670000
Spring 2950000 3000300
Summer 2980700 3120200
Winter 3200100 3350000
R 的 data.table 資料合併

一起來練習吧!

R 的 data.table 資料合併

Preparing Video For Download...