我在R中有一个data.table
:
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中是否有类似于plyr中的margins=TRUE
命令的简单方法来指定小计和总计?我希望在我的数据集上使用data.table而不是plyr,因为这是一个非常大的数据集,并且已经以data.table格式存在。
?cube
应该会跳转到该页面。您可以在那里找到示例。在线版本:https://rdatatable.gitlab.io/data.table/library/data.table/html/groupingsets.html - jangoreckiinstall.packages("data.table", type = "source", repos = "http://Rdatatable.github.io/data.table")
从软件包源安装。如果您想要二进制软件包,请参阅Installation维基页面获取详细信息。 - jangorecki