R 带有expss包的复杂表
向所有expss专家问好(@Gregory Demin,如果你读过这条消息的话!),在发现这个软件包几天后,我取得了不错的成绩,但仍然在努力使用tab_*函数族创建复杂的交叉表,特别是创建具有显著性测试的组合 让我们从参考手册中给出的示例开始:R 带有expss包的复杂表,r,expss,R,Expss,向所有expss专家问好(@Gregory Demin,如果你读过这条消息的话!),在发现这个软件包几天后,我取得了不错的成绩,但仍然在努力使用tab_*函数族创建复杂的交叉表,特别是创建具有显著性测试的组合 让我们从参考手册中给出的示例开始: library(expss) mtcars %>% tab_significance_options(keep = "none", sig_labels = NULL, subtable_marks = "greater", mode = "a
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”功能可以非常简单地并排显示计数和百分比,但仅限于此目的。我们如何将案例添加到交叉表中?(以案例/百分比/测试的形式,在3个不同的列中)
2) 默认情况下,本例中的显著性测试输出为字母,为0.05级。这两个参数都可以更改。但在一个表的计算中是否可能包含两个显著性水平?本着以下精神:
sig_level = c(0.01, 0.05)
sig_labels = c(LETTERS, letters)
3) 最后(可能很简单?),是否有可能强制显示零?我有频率为0的系数级别,在基本R表中显示为0。使用expss时,标签保持不变,但行/列保持为空
再说一次,也许我正在寻找的东西并不存在于expss中,但至少我会确信它。
谢谢大家! 您的第二点(两级重要性)现在不可能。不过,您可以在特别准备的表格上添加第二级显著性和附加计算。
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()
谢谢你的快速回答,效果很好!我在这里和那里添加了一些东西(例如小计),但这变得相当冗长。关于如何避免重复这个序列太多次,有什么建议吗?(例如,包装在函数中?)该死,你太快了!正是我需要的,非常感谢!