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


R hardhat weighted_table 加權表


weighted_table() 根據 ... 中提供的因子和 weights 中提供的雙權重向量計算加權列聯表。它可以被視為 base::table() 的加權擴展和 stats::xtabs() 的替代方案。

weighted_table() 在構造表時始終使用 levels() 返回的精確級別集。這會產生以下屬性:

  • 除非有明確的 NA 因子級別,否則因子中發現的缺失值永遠不會包含在表中。如果需要,可以使用 base::addNA()forcats::fct_expand(x, NA) 將其添加到因子中。

  • 在基礎數據中實際未使用的因子中找到的級別包含在表中,其值為 0 。如果需要,您可以通過 factor() 重新運行因子或調用 forcats::fct_drop() 來刪除未使用的因子級別。

有關這些屬性的更多信息,請參閱示例部分。

用法

weighted_table(..., weights, na_remove = FALSE)

參數

...

加權表中使用的等長因子。如果 ... 被命名,這些名稱將傳播到結果表的 "dimnames names" 上。必須至少提供一個因子。

weights

用於填充加權表單元格的雙權重向量。該長度必須與 ... 中提供的因子相同。

na_remove

單個 TRUEFALSE 用於處理在求和權重時是否應刪除 weights 中的缺失值。

作為雙精度值數組的加權表。

細節

weighted_table() 的結果沒有附加 "table" 類。它隻是一個雙數組。這是因為 "table" 對象被定義為包含整數計數,但加權表可以使用分數權重。

例子

x <- factor(c("x", "y", "z", "x", "x", "y"))
y <- factor(c("a", "b", "a", "a", "b", "b"))
w <- c(1.5, 2, 1.1, .5, 3, 2)

weighted_table(x = x, y = y, weights = w)
#>    y
#> x     a b
#>   x 2.0 3
#>   y 0.0 4
#>   z 1.1 0

# ---------------------------------------------------------------------------
# If `weights` contains missing values, then missing values will be
# propagated into the weighted table
x <- factor(c("x", "y", "y"))
y <- factor(c("a", "b", "b"))
w <- c(1, NA, 3)

weighted_table(x = x, y = y, weights = w)
#>    y
#> x   a  b
#>   x 1  0
#>   y 0 NA

# You can remove the missing values while summing up the weights with
# `na_remove = TRUE`
weighted_table(x = x, y = y, weights = w, na_remove = TRUE)
#>    y
#> x   a b
#>   x 1 0
#>   y 0 3

# ---------------------------------------------------------------------------
# If there are missing values in the factors, those typically don't show
# up in the weighted table
x <- factor(c("x", NA, "y", "x"))
y <- factor(c("a", "b", "a", NA))
w <- 1:4

weighted_table(x = x, y = y, weights = w)
#>    y
#> x   a b
#>   x 1 0
#>   y 3 0

# This is because the missing values aren't considered explicit levels
levels(x)
#> [1] "x" "y"

# You can force them to show up in the table by using `addNA()` ahead of time
# (or `forcats::fct_expand(x, NA)`)
x <- addNA(x, ifany = TRUE)
y <- addNA(y, ifany = TRUE)
levels(x)
#> [1] "x" "y" NA 

weighted_table(x = x, y = y, weights = w)
#>       y
#> x      a b <NA>
#>   x    1 0    4
#>   y    3 0    0
#>   <NA> 0 2    0

# ---------------------------------------------------------------------------
# If there are levels in your factors that aren't actually used in the
# underlying data, then they will still show up in the table with a `0` value
x <- factor(c("x", "y", "x"), levels = c("x", "y", "z"))
y <- factor(c("a", "b", "a"), levels = c("a", "b", "c"))
w <- 1:3

weighted_table(x = x, y = y, weights = w)
#>    y
#> x   a b c
#>   x 4 0 0
#>   y 0 2 0
#>   z 0 0 0

# If you want to drop these empty factor levels from the result, you can
# rerun `factor()` ahead of time to drop them (or `forcats::fct_drop()`)
x <- factor(x)
y <- factor(y)
levels(x)
#> [1] "x" "y"

weighted_table(x = x, y = y, weights = w)
#>    y
#> x   a b
#>   x 4 0
#>   y 0 2
源代碼:R/table.R

相關用法


注:本文由純淨天空篩選整理自Davis Vaughan等大神的英文原創作品 Weighted table。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。