如果您有2个交叉分类变量,则可以使用rowSums并colSums在xtabs输出上生成保证金总计.但是,如果你有3个分类变量(即每个子表中的保证金总数),怎么办呢?
Aniko在评论中提到了这一点,但它从未作为答案提供.
我独立发现了这个,然后注意到它在评论中,所以归功于Aniko将它放在首位.
addmargins 是答案:
对于给定的表,可以指定将哪个分类因子扩展一个或多个级别以保持要计算的边距.例如,可以在第一维上形成总和和平均值,在第二维上形成中位数.结果表将为第一个维度增加两个额外级别,为第二个维度增加一个额外级别.默认值是对表中的所有边距求和.其他可能性可能会产生取决于计算边距的顺序的结果.这在功能的打印输出中标记.
一般方法是使用该apply函数,但特别是对于总计,该margin.table函数可能更方便:
#create 3 factors
a <- gl(2,4, length=20)
b <- gl(3,2, length=20)
d <- gl(4,2, length=20)
# table
tt <- xtabs(~a+b+d)
# marginal sums
margin.table(tt, 1)
apply(tt, 1, sum) #same answer
#multi-way margins
margin.table(tt, 1:2)
apply(tt, 1:2, sum) #same answer
Run Code Online (Sandbox Code Playgroud)