簡體   English   中英

按多種因素對表進行分組並將其從長格式擴展到寬格式 - R 中的 data.table 方式

[英]grouping table by multiple factors and spreading it from long format to wide - the data.table way in R

例如,我將使用 R 中可用的mtcars數據:

data(mtcars)
setDT(mtcars)

讓我想通過三個變量對數據進行分組,即: carbcylgear 我這樣做了如下。 但是,我相信有更好的方法,因為這是非常重復的。

newDTcars <- mtcars [, mtcars[, mtcars[, .N , by = carb], by = cyl], by= gear]

其次,我想要寬格式的數據,其中每個gear都有一個單獨的列。 出於說明目的,我使用tidyr完成了此操作,但是我希望以“data.table”方式完成此操作。

newDTcars %>% tidyr::spread(gear, N)

這個問題的重點是繼續解決 data.table 世界,因為我也想了解更多關於data.table

data.table ,我們可以按多列進行分組,並且可以使用dcast來重塑。

library(data.table)
dcast(mtcars[, .N, .(carb, cyl, gear)], carb+cyl~gear, value.var = "N")

#   carb cyl  3  4  5
#1:    1   4  1  4 NA
#2:    1   6  2 NA NA
#3:    2   4 NA  4  2
#4:    2   8  4 NA NA
#5:    3   8  3 NA NA
#6:    4   6 NA  4 NA
#7:    4   8  5 NA  1
#8:    6   6 NA NA  1
#9:    8   8 NA NA  1

您可以在dcast使用fill參數將NA替換為 0 或任何其他數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM