Агрегирование промежуточных и общих итогов с помощью data.table
у меня есть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.