在 R table 中按调查权重加权的原始计数和百分比?
Raw counts and percentages weighted by survey weight in R table?
我正在使用 R 包 table1
创建一个简单的 table 汇总统计数据,主要用于分解变量(年龄类别、性别、种族等)。 table 中的计数需要是原始计数,但百分比需要通过数据集中的调查权重变量进行加权。这似乎是一个足够简单的任务,应该有一个具有此功能的 table-making 包,但我似乎无法在 table1, flex[=18= 中找到解决方案]、gt、kableExtra 或任何其他软件包。
下面的示例大致显示了到目前为止我能做的事情,但是出现的百分比是未加权的,我找不到使用 sv_weight
变量计算加权百分比的方法。
set.seed(123)
dat <- data.frame(
year = factor(sample(c("2019", "2020"), 100, replace = TRUE)),
sv_weight = (sample(1:150, 100, replace = TRUE)),
sex = factor(sample(c("Male", "Female"), 100, replace = TRUE)),
race = factor(sample(c("White", "Hispanic", "Black"), 100, replace = TRUE)))
library(table1)
tab<- table1(~ sex + race | year, data = dat)
tab
您可以组合使用 survey
和 gtsummary
包。 survey::svydesign
中有一个选项可以添加权重。然后,survey
对象通过管道传输到 tbl_svysummary
。但是,根据您的预期输出,您可能需要使用不同的统计信息或调整其他一些设置。
library(gtsummary)
library(dplyr)
results <-
survey::svydesign(~ 1, data = dat, weights = ~ sv_weight) %>%
tbl_svysummary(
by = year,
include = c(sex, race),
statistic = list(all_categorical() ~ "{n_unweighted} ({p}%)")
)
输出
我正在使用 R 包 table1
创建一个简单的 table 汇总统计数据,主要用于分解变量(年龄类别、性别、种族等)。 table 中的计数需要是原始计数,但百分比需要通过数据集中的调查权重变量进行加权。这似乎是一个足够简单的任务,应该有一个具有此功能的 table-making 包,但我似乎无法在 table1, flex[=18= 中找到解决方案]、gt、kableExtra 或任何其他软件包。
下面的示例大致显示了到目前为止我能做的事情,但是出现的百分比是未加权的,我找不到使用 sv_weight
变量计算加权百分比的方法。
set.seed(123)
dat <- data.frame(
year = factor(sample(c("2019", "2020"), 100, replace = TRUE)),
sv_weight = (sample(1:150, 100, replace = TRUE)),
sex = factor(sample(c("Male", "Female"), 100, replace = TRUE)),
race = factor(sample(c("White", "Hispanic", "Black"), 100, replace = TRUE)))
library(table1)
tab<- table1(~ sex + race | year, data = dat)
tab
您可以组合使用 survey
和 gtsummary
包。 survey::svydesign
中有一个选项可以添加权重。然后,survey
对象通过管道传输到 tbl_svysummary
。但是,根据您的预期输出,您可能需要使用不同的统计信息或调整其他一些设置。
library(gtsummary)
library(dplyr)
results <-
survey::svydesign(~ 1, data = dat, weights = ~ sv_weight) %>%
tbl_svysummary(
by = year,
include = c(sex, race),
statistic = list(all_categorical() ~ "{n_unweighted} ({p}%)")
)
输出