data.table - 使用 ~ var|factor - cast / dcast 将 data.table 拆分为列表的元素
data.table - split data.table into elements of a lists using ~ var|factor - cast / dcast
我有一个很大的 data.table
用于对不同级别的数据进行后续分析。为了避免重复代码,我想将 data.table
分成更小的块并将它们保存为列表(的元素)。几天前,我看到一个 post,其中使用了这样的东西:
setDT(mtcars)
names(mtcars)
combi <- dcast(mtcars[,.(carb, gear, mpg, cyl, vs)], cyl + gear ~ vs|cyl)
这导致单独的(宽)data.table 包含 cyl
、gear
、vs
- 单独用于年份 cyl
。重点是为每个圆柱保存单独的 data.table
,不一定在宽 table 上(我相信 post 使用 cast
或 dcast
来达到预期的结果)
但是,我在任何地方都找不到 post,也找不到任何关于类似操作的文档。有什么想法吗?
下面显示了如何将每个级别的 cyl 的数据表放入列表中 - 如果您想将它们写入 .txt 文件等,那么只需将该部分更改为 fwrite(...)。请注意,它按照 cyl 在数据中的顺序进行处理(i = 1 是 cyl = 6 时,i = 2 是 cyl = 4 时...):
dtCars <- data.table(mtcars, keep.rownames = TRUE)
carsList <- list()
for(i in 1:length(dtCars[,unique(cyl)])){
carsList[[i]] <- dtCars[cyl == unique(cyl)[i]]
}
我有一个很大的 data.table
用于对不同级别的数据进行后续分析。为了避免重复代码,我想将 data.table
分成更小的块并将它们保存为列表(的元素)。几天前,我看到一个 post,其中使用了这样的东西:
setDT(mtcars)
names(mtcars)
combi <- dcast(mtcars[,.(carb, gear, mpg, cyl, vs)], cyl + gear ~ vs|cyl)
这导致单独的(宽)data.table 包含 cyl
、gear
、vs
- 单独用于年份 cyl
。重点是为每个圆柱保存单独的 data.table
,不一定在宽 table 上(我相信 post 使用 cast
或 dcast
来达到预期的结果)
但是,我在任何地方都找不到 post,也找不到任何关于类似操作的文档。有什么想法吗?
下面显示了如何将每个级别的 cyl 的数据表放入列表中 - 如果您想将它们写入 .txt 文件等,那么只需将该部分更改为 fwrite(...)。请注意,它按照 cyl 在数据中的顺序进行处理(i = 1 是 cyl = 6 时,i = 2 是 cyl = 4 时...):
dtCars <- data.table(mtcars, keep.rownames = TRUE)
carsList <- list()
for(i in 1:length(dtCars[,unique(cyl)])){
carsList[[i]] <- dtCars[cyl == unique(cyl)[i]]
}