У меня есть 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.