当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。