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

Ответы на вопрос(5)

Ваш ответ на вопрос