當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R addmargins 在多維表或數組上設置任意邊距


R語言 addmargins 位於 stats 包(package)。

說明

對於給定的表,可以指定將哪個分類因子擴展一個或多個級別以保持要計算的邊距。例如,可以在第一維度上形成總和和均值,在第二維度上形成中值。生成的表將為第一個維度提供兩個額外級別,為第二個維度提供一個額外級別。默認值是對表中所有邊距求和。其他可能性可能會給出取決於計算邊距的順序的結果。這在函數的打印輸出中進行了標記。

用法

addmargins(A, margin = seq_along(dim(A)), FUN = sum, quiet = FALSE)

參數

A

表或數組。該函數使用 A"dim""dimnames" 屬性。

margin

用於生成邊距的維度向量。邊距按照 margin 中指定尺寸的順序形成。

FUN

listmargin 長度相同,列表中的每個元素都是 function 或函數列表。在長度為 1 的情況下,可以是一個函數而不是一個列表。列表元素的名稱將在結果的暗名稱中顯示為級別。未命名的列表元素將具有構造的名稱:函數的名稱或基於表中位置的構造名稱。

quiet

邏輯,它抑製告訴邊距計算順序的消息。

細節

如果用於生成邊距的函數不可交換,則結果取決於計算邊距的順序。邊距注釋是通過命名 FUN 列表來完成的。

tablearrayA 具有相同的維度數,但具有 margin 中提到的額外維度級別。添加到每個維度的級別數是 FUN 中條目的長度。打印一條包含邊距計算順序的消息。

例子

Aye <- sample(c("Yes", "Si", "Oui"), 177, replace = TRUE)
Bee <- sample(c("Hum", "Buzz"), 177, replace = TRUE)
Sea <- sample(c("White", "Black", "Red", "Dead"), 177, replace = TRUE)
(A <- table(Aye, Bee, Sea))
(aA <- addmargins(A))

ftable(A)
ftable(aA)

# Non-commutative functions - note differences between resulting tables:
ftable( addmargins(A, c(3, 1),
                   FUN = list(list(Min = min, Max = max),
                              Sum = sum)))
ftable( addmargins(A, c(1, 3),
                   FUN = list(Sum = sum,
                              list(Min = min, Max = max))))

# Weird function needed to return the N when computing percentages
sqsm <- function(x) sum(x)^2/100
B <- table(Sea, Bee)
round(sweep(addmargins(B, 1, list(list(All = sum, N = sqsm))), 2,
            apply(B, 2, sum)/100, `/`), 1)
round(sweep(addmargins(B, 2, list(list(All = sum, N = sqsm))), 1,
            apply(B, 1, sum)/100, `/`), 1)

# A total over Bee requires formation of the Bee-margin first:
mB <-  addmargins(B, 2, FUN = list(list(Total = sum)))
round(ftable(sweep(addmargins(mB, 1, list(list(All = sum, N = sqsm))), 2,
                   apply(mB, 2, sum)/100, `/`)), 1)

## Zero.Printing table+margins:
set.seed(1)
x <- sample( 1:7, 20, replace = TRUE)
y <- sample( 1:7, 20, replace = TRUE)
tx <- addmargins( table(x, y) )
print(tx, zero.print = ".")

作者

Bendix Carstensen, Steno Diabetes Center & Department of Biostatistics, University of Copenhagen, https://BendixCarstensen.com, autumn 2003. Margin naming enhanced by Duncan Murdoch.

也可以看看

tableftablemargin.table

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Puts Arbitrary Margins on Multidimensional Tables or Arrays。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。