保证金总额为xtabs

Jam*_*mes 5 r

如果您有2个交叉分类变量,则可以使用rowSumscolSumsxtabs输出上生成保证金总计.但是,如果你有3个分类变量(即每个子表中的保证金总数),怎么办呢?

dsz*_*dsz 8

Aniko在评论中提到了这一点,但它从未作为答案提供.

我独立发现了这个,然后注意到它在评论中,所以归功于Aniko将它放在首位.

addmargins 是答案:

对于给定的表,可以指定将哪个分类因子扩展一个或多个级别以保持要计算的边距.例如,可以在第一维上形成总和和平均值,在第二维上形成中位数.结果表将为第一个维度增加两个额外级别,为第二个维度增加一个额外级别.默认值是对表中的所有边距求和.其他可能性可能会产生取决于计算边距的顺序的结果.这在功能的打印输出中标记.


Ani*_*iko 5

一般方法是使用该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)