[英]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)
讓我想通過三個變量對數據進行分組,即: carb
、 cyl
和gear
。 我這樣做了如下。 但是,我相信有更好的方法,因為這是非常重復的。
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.