data.table - разбить data.table на элементы списков, используя ~ var | factor - cast / dcast - PullRequest
0 голосов
/ 26 марта 2020

У меня есть большой data.table, который я использую для последующего анализа на разных уровнях данных. Чтобы избежать повторяющегося кода, я хотел бы разбить мои data.table на более мелкие куски и сохранить их как (элементы) списков. Пару дней go Я видел пост, где использовалось что-то подобное:

setDT(mtcars)
names(mtcars)
combi <- dcast(mtcars[,.(carb, gear, mpg, cyl, vs)], cyl + gear ~ vs|cyl)

Это привело к созданию отдельной (широкой) таблицы данных, содержащей cyl, gear, vs - отдельно на год cyl. Акцент делается на сохранении отдельных data.table для каждого цилиндра, не обязательно на широком столе (я считаю, что сообщение использовало cast или dcast для достижения желаемых результатов)

Однако я не могу найти сообщение нигде и также не могу найти никакой документации о подобных манипуляциях. Есть идеи?

1 Ответ

0 голосов
/ 27 марта 2020

Ниже показано, как получить таблицы данных для каждого уровня цилиндра в список - если вы хотите записать их в текстовый файл и т. Д. c. затем просто измените этот раздел на fwrite (...). Обратите внимание, что он работает в том порядке, в котором данные цил находятся в данных (i = 1, когда цил = 6, i = 2, когда цил = 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]]
}
...