【发布时间】:2020-07-01 11:38:25
【问题描述】:
例如,我将使用 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 的信息。
【问题讨论】:
-
也许
dat[, .N, by=c("var1", "var2", "var3")]是您的第一步。然后使用dcast重塑宽。 -
你需要
dcast(mtcars[, .N, .(carb, cyl, gear)], carb+cyl~gear, value.var = "N")吗? -
@RonakShah 完全正确。你能把它写成答案让我接受吗?
标签: r data.table tidyr