Я хотел бы построить таблицы с совокупным процентом, используя пакет expss, включая как восходящие (0% -> 100%), так и нисходящие (100% -> 0%) ордера. Уже существует существующая функция (а именно fre()
) для возрастания, хотя результирующая таблица не слишком настраиваема.
Я хотел бы включить эти вычисления в инструкцию tab_stat_fun
, и мне удалось добраться до желаемый вывод для невзвешенных наборов данных. Рассмотрим следующий пример (infert
набор данных):
infert %>%
tab_cells(age) %>%
tab_cols(total()) %>%
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") %>%
tab_stat_fun(label="% Asc.", function(x){100*cumsum(table(sort(x)))/sum(table(sort(x)))}) %>%
tab_stat_fun(label="% Desc.", function(x){100-(100*cumsum(table(sort(x)))/sum(table(sort(x))))}) %>%
tab_pivot(stat_position="inside_columns")
Прекрасно работает, но если я когда-нибудь захочу взвесить эти результаты по числовому c вектору (для демонстрации: infert$w <- as.vector(x=rep(2, times=nrow(infert)), mode='numeric')
) это неизбежно приведет к ошибке, поскольку ни сумма, ни сумма не принимают аргумент весов (насколько я знаю).
Существует ли специальная встроенная функция, которая бы справилась? Или комбинация функций, которая может подразумевать умножение вектора возраста на вектор веса?