带有 expss 包的复杂表
Complex tables with expss package
所有 exps 专家您好(@Gregory Demin,如果您阅读此消息!),发现这个包几天后,我取得了不错的成绩,但仍然难以使用 tab_* 系列函数创建复杂的交叉表,尤其是创建具有显着性检验的组合。
让我们从参考手册上给出的例子开始:
library(expss)
mtcars %>%
tab_significance_options(keep = "none", sig_labels = NULL, subtable_marks = "greater", mode = "append") %>%
tab_cols(total(), vs, am) %>%
tab_cells(cyl, gear) %>%
tab_stat_cpct() %>%
tab_last_add_sig_labels() %>%
tab_last_sig_cpct() %>%
tab_last_hstack("inside_columns") %>%
tab_pivot(stat_position = "inside_rows")
从这一点来看,我不知道是否可以执行以下操作,如果可以,什么脚本可以解决问题:
1) 使用'fre' 函数并排显示计数和百分比非常简单,但仅限于此目的。我们如何将案例添加到交叉表? (以 cases/percents/tests 的形式,在 3 个不同的列中)
2) 默认情况下,此示例中的显着性测试输出为 LETTERS,级别为 0.05。两个参数都可以更改。但是是否可以在单个 table 计算中包含两个显着性水平?本着以下精神:
sig_level = c(0.01, 0.05)
sig_labels = c(LETTERS, letters)
3) 最后(可能是一个简单的?),是否有可能强制显示零?我有频率为 0 的因子水平,在基数 R tables 中显示为 0。使用 expss 标签保留,但 rows/columns 保持为空。
同样,也许我正在寻找的东西在 expss 中不存在,但至少我可以确定。
谢谢!
你的第二点(双水平意义)现在不可能。但是,您可以通过对专门准备的 table 进行额外计算来添加二级显着性。
1 和 3 很简单:
library(expss)
data(mtcars)
mtcars %>%
tab_significance_options(keep = "none", sig_labels = NULL, subtable_marks = "greater", mode = "append") %>%
tab_cols(total(), vs, am) %>%
tab_cells(cyl, gear) %>%
# block for cases
tab_stat_cases(label = "cases") %>%
tab_last_add_sig_labels() %>%
# block for percent statistic
tab_stat_cpct(label = "%") %>% # percent
tab_last_add_sig_labels() %>%
tab_last_sig_cpct() %>%
tab_pivot(stat_position = "inside_columns") %>%
# converts NA to zero
recode(as.criterion(is.numeric) & is.na ~ 0, TRUE ~ copy)
更新:
您可以将部分链指定为自定义函数以避免重复:
library(expss)
data(mtcars)
### tab cols
my_banner = mtcars %>%
tab_cols(total(), vs, am)
### table and formattig
my_custom_table = . %>%
tab_significance_options(keep = "none", sig_labels = NULL, subtable_marks = "greater", mode = "append") %>%
# block for cases
tab_stat_cases(label = "cases") %>%
tab_last_add_sig_labels() %>%
# block for percent statistic
tab_stat_cpct(label = "%") %>% # percent
tab_last_add_sig_labels() %>%
tab_last_sig_cpct() %>%
tab_pivot(stat_position = "inside_columns") %>%
# converts NA to zero
recode(as.criterion(is.numeric) & is.na ~ 0, TRUE ~ copy)
### here we build table
my_banner %>%
tab_cells(cyl, gear) %>%
my_custom_table()
所有 exps 专家您好(@Gregory Demin,如果您阅读此消息!),发现这个包几天后,我取得了不错的成绩,但仍然难以使用 tab_* 系列函数创建复杂的交叉表,尤其是创建具有显着性检验的组合。
让我们从参考手册上给出的例子开始:
library(expss)
mtcars %>%
tab_significance_options(keep = "none", sig_labels = NULL, subtable_marks = "greater", mode = "append") %>%
tab_cols(total(), vs, am) %>%
tab_cells(cyl, gear) %>%
tab_stat_cpct() %>%
tab_last_add_sig_labels() %>%
tab_last_sig_cpct() %>%
tab_last_hstack("inside_columns") %>%
tab_pivot(stat_position = "inside_rows")
从这一点来看,我不知道是否可以执行以下操作,如果可以,什么脚本可以解决问题:
1) 使用'fre' 函数并排显示计数和百分比非常简单,但仅限于此目的。我们如何将案例添加到交叉表? (以 cases/percents/tests 的形式,在 3 个不同的列中)
2) 默认情况下,此示例中的显着性测试输出为 LETTERS,级别为 0.05。两个参数都可以更改。但是是否可以在单个 table 计算中包含两个显着性水平?本着以下精神:
sig_level = c(0.01, 0.05)
sig_labels = c(LETTERS, letters)
3) 最后(可能是一个简单的?),是否有可能强制显示零?我有频率为 0 的因子水平,在基数 R tables 中显示为 0。使用 expss 标签保留,但 rows/columns 保持为空。
同样,也许我正在寻找的东西在 expss 中不存在,但至少我可以确定。 谢谢!
你的第二点(双水平意义)现在不可能。但是,您可以通过对专门准备的 table 进行额外计算来添加二级显着性。 1 和 3 很简单:
library(expss)
data(mtcars)
mtcars %>%
tab_significance_options(keep = "none", sig_labels = NULL, subtable_marks = "greater", mode = "append") %>%
tab_cols(total(), vs, am) %>%
tab_cells(cyl, gear) %>%
# block for cases
tab_stat_cases(label = "cases") %>%
tab_last_add_sig_labels() %>%
# block for percent statistic
tab_stat_cpct(label = "%") %>% # percent
tab_last_add_sig_labels() %>%
tab_last_sig_cpct() %>%
tab_pivot(stat_position = "inside_columns") %>%
# converts NA to zero
recode(as.criterion(is.numeric) & is.na ~ 0, TRUE ~ copy)
更新: 您可以将部分链指定为自定义函数以避免重复:
library(expss)
data(mtcars)
### tab cols
my_banner = mtcars %>%
tab_cols(total(), vs, am)
### table and formattig
my_custom_table = . %>%
tab_significance_options(keep = "none", sig_labels = NULL, subtable_marks = "greater", mode = "append") %>%
# block for cases
tab_stat_cases(label = "cases") %>%
tab_last_add_sig_labels() %>%
# block for percent statistic
tab_stat_cpct(label = "%") %>% # percent
tab_last_add_sig_labels() %>%
tab_last_sig_cpct() %>%
tab_pivot(stat_position = "inside_columns") %>%
# converts NA to zero
recode(as.criterion(is.numeric) & is.na ~ 0, TRUE ~ copy)
### here we build table
my_banner %>%
tab_cells(cyl, gear) %>%
my_custom_table()