Сложные таблицы с пакетом expss - PullRequest
1 голос
/ 31 марта 2020

Привет всем экспертам Expss (@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' довольно просто отображать количество и проценты рядом, но это ограничено только этой целью. Как мы можем добавить дела в кросс-таблицу? (в форме наблюдений / процентов / тестов, в 3 различных столбцах)

2) По умолчанию тесты значимости в этом примере выводятся как ПИСЬМА на уровне 0,05. Оба параметра могут быть изменены. Но возможно ли включить два уровня значимости в расчет одной таблицы? Что-то в духе:

sig_level = c(0.01, 0.05)
sig_labels = c(LETTERS, letters)

3) Последнее (возможно, простое?), Есть ли возможность принудительного отображения нулей? У меня есть уровни фактора с частотами = 0, отображаемые с 0 в таблицах базы R. С expss метка остается, но строки / столбцы остаются пустыми.

Опять же, возможно, то, что я ищу, не существует с expss, но, по крайней мере, я буду в этом уверен. Спасибо!

1 Ответ

1 голос
/ 02 апреля 2020

Ваша вторая точка (двухуровневая значимость) сейчас невозможна. Однако вы можете добавить значение второго уровня с дополнительными расчетами на специально подготовленной таблице. 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)

enter image description here

ОБНОВЛЕНИЕ: Вы можете указать части цепи как пользовательские функции, чтобы избежать повторения:

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()
...