У меня есть data.table
в R:
library(data.table)
set.seed(1)
DT = data.table(
group=sample(letters[1:2],100,replace=TRUE),
year=sample(2010:2012,100,replace=TRUE),
v=runif(100))
Агрегация этих данных в сводную таблицу по группам и годам проста и изящна:
table <- DT[,mean(v),by='group, year']
Однако объединение этих данных в сводную таблицу, включая промежуточные итоги и итоговые суммы, немного сложнее и намного менее изящно:
library(plyr)
yearTot <- DT[,list(mean(v),year='Total'),by='group']
groupTot <- DT[,list(mean(v),group='Total'),by='year']
Tot <- DT[,list(mean(v), year='Total', group='Total')]
table <- rbind.fill(table,yearTot,groupTot,Tot)
table$group[table$group==1] <- 'Total'
table$year[table$year==1] <- 'Total'
Это дает:
table[order(table$group, table$year), ]
Есть ли простой способ указать промежуточные итоги и суммарные итоги с помощью data.table, например команды margins=TRUE
для plyr? Я бы предпочел использовать data.table поверх plyr в моем наборе данных, так как это очень большой набор данных, который у меня уже есть в формате data.table.