weighted_table()
根据 ...
中提供的因子和 weights
中提供的双权重向量计算加权列联表。它可以被视为 base::table()
的加权扩展和 stats::xtabs()
的替代方案。
weighted_table()
在构造表时始终使用 levels()
返回的精确级别集。这会产生以下属性:
-
除非有明确的
NA
因子级别,否则因子中发现的缺失值永远不会包含在表中。如果需要,可以使用base::addNA()
或forcats::fct_expand(x, NA)
将其添加到因子中。 -
在基础数据中实际未使用的因子中找到的级别包含在表中,其值为
0
。如果需要,您可以通过factor()
重新运行因子或调用forcats::fct_drop()
来删除未使用的因子级别。
有关这些属性的更多信息,请参阅示例部分。
参数
- ...
-
加权表中使用的等长因子。如果
...
被命名,这些名称将传播到结果表的 "dimnames names" 上。必须至少提供一个因子。 - weights
-
用于填充加权表单元格的双权重向量。该长度必须与
...
中提供的因子相同。 - na_remove
-
单个
TRUE
或FALSE
用于处理在求和权重时是否应删除weights
中的缺失值。
例子
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 hardhat validate_prediction_size 确保预测具有正确的行数
- R hardhat default_recipe_blueprint 默认配方蓝图
- R hardhat is_blueprint x 是预处理蓝图吗?
- R hardhat validate_column_names 确保数据包含所需的列名
- R hardhat default_formula_blueprint 默认公式蓝图
- R hardhat update_blueprint 更新预处理蓝图
- R hardhat validate_outcomes_are_univariate 确保结果是单变量
- R hardhat get_levels 从 DataFrame 中提取因子水平
- R hardhat add_intercept_column 向数据添加截距列
- R hardhat is_frequency_weights x 是频率权重向量吗?
- R hardhat model_offset 提取模型偏移
- R hardhat standardize 标准化结果
- R hardhat model_matrix 构建设计矩阵
- R hardhat is_importance_weights x 是重要性权重向量吗?
- R hardhat run-mold 根据蓝图 Mold()
- R hardhat get_data_classes 从 DataFrame 或矩阵中提取数据类
- R hardhat fct_encode_one_hot 将一个因子编码为 one-hot 指标矩阵
- R hardhat new_frequency_weights 构建频率权重向量
- R hardhat validate_no_formula_duplication 确保公式中不出现重复项
- R hardhat default_xy_blueprint 默认 XY 蓝图
- R hardhat shrink 仅对所需列进行子集化
- R hardhat validate_outcomes_are_numeric 确保结果都是数字
- R hardhat scream ? 尖叫。
- R hardhat frequency_weights 频率权重
- R hardhat refresh_blueprint 刷新预处理蓝图
注:本文由纯净天空筛选整理自Davis Vaughan等大神的英文原创作品 Weighted table。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。