На этот раз особый запрос, поскольку я знаю, как добраться до нужной мне таблицы, но хотел бы знать, существует ли менее многословное решение с expss. Во-первых, эту топи c можно считать продолжением этого обсуждения -> Сложные таблицы с пакетом expss , а также связано с этой другой -> Как отображать результаты из только выбрать подгруппы + весь фрейм данных в таблице expss?
Моя конструкция таблицы выглядит следующим образом: сначала отображаются результаты по всем строкам фрейма данных, а затем разбиваются на подгруппы. На сегодняшний день, ниже, как я продолжаю (пример с infert
набором данных):
1) Шаблон таблицы
### Banner set up
my_banner = infert %>%
tab_cols(total())
my_custom_table = . %>%
tab_significance_options(sig_level=0.2, keep="none", sig_labels=NULL, subtable_marks="greater", mode="append") %>%
tab_stat_cases(label="N", total_row_position="above", total_statistic="u_cases", total_label="TOTAL") %>%
tab_stat_cpct(label="%Col.", total_row_position="above", total_statistic="u_cpct", total_label="TOTAL") %>%
# Parity x Education
tab_cols(education) %>%
tab_stat_cases(label="N", total_row_position="above", total_statistic="u_cases", total_label="TOTAL") %>%
tab_last_add_sig_labels() %>%
tab_stat_cpct(label="%Col.", total_row_position="above", total_statistic="u_cpct", total_label="TOTAL") %>%
tab_last_add_sig_labels() %>%
tab_last_sig_cpct(label="T.1", compare_type="subtable")
2) Создание 3 отдельных таблиц (1 для всего и 1 для каждой подгруппы), объединенные в одну:
tab1 <- my_banner %>%
tab_cells(parity) %>%
my_custom_table() %>%
tab_pivot(stat_position="inside_columns")
tab2 <- infert %>%
apply_labels(education="education (CASE 0)") %>%
tab_cells(parity) %>%
tab_cols(total(label = "CASE 0")) %>%
tab_subgroup(case==0) %>%
my_custom_table() %>%
tab_pivot(stat_position="inside_columns")
tab3 <- infert %>%
apply_labels(education="education (CASE 1)") %>%
tab_cells(parity) %>%
tab_cols(total(label = "CASE 1")) %>%
tab_subgroup(case==1) %>%
my_custom_table() %>%
tab_pivot(stat_position="inside_columns")
final_tab <- tab1 %merge% tab2 %merge% tab3
Весь этот кусок кода только для 1 таблицы, вы понимаете мою озабоченность. Любой совет хорошей практики, чтобы избежать этой длинной (но работающей) последовательности? Мое первое предположение было:
my_banner %>%
tab_cells(parity) %>%
my_custom_table() %>%
tab_subgroup(case==0) %>%
my_custom_table() %>%
tab_subgroup(case==1) %>%
my_custom_table() %>%
tab_pivot(stat_position="inside_columns")
Таблица вычисляется, но результат находится далеко от цели, возможно, есть исправление, но я не знаю, где искать. Любая помощь будет оценена, спасибо! (Примечание: если простое решение включает в себя избавление от столбцов #TOTAL, мне тоже хорошо)