Я хотел бы использовать таблицу данных переписей нескольких стран и составить таблицу непредвиденных расходов со строкой / столбцом / общим процентом. Я борюсь с тем, что данные уже агрегированы в виде таблицы сопряженности. Как преобразовать необработанные данные в таблицу на случай непредвиденных обстоятельств?
set.seed(1)
country <- c(rep("countryA", 6), rep("countryB", 6))
age <- c(rep(c("0-14", "15-24", "25-59"), 2), rep(c("0-18", "18-30", "30-60"), 2))
sex <- rep(c(rep("female", 3), rep("male", 3)), 2)
count <- abs(round(rnorm(12, 1000000, 500000)))
df <- data.frame(country, age, sex, count)
Обратите внимание, что в данных, которые я имею в разных бюро отчетов о переписи, данные переписи для разных возрастных групп представлены в MWE.
То, что я хотел бы, это:
[[1]] CountryA
0-14 15-24 25-59
Female row/col/total% row/col/total% row/col/total% Row margins %
Male row/col/total% row/col/total% row/col/total% Row margins %
Column margins % Column margins % Column margins % Total margins %
[[2]] CountryB
0-18 18-30 30-60
Female row/col/total% row/col/total% row/col/total% Row margins %
Male row/col/total% row/col/total% row/col/total% Row margins %
Column margins % Column margins % Column margins % Total margins %
Где row / col / total% должны быть варианты для выбора и не обязательно должны отображаться в той же таблице. Я также гибок в отношении класса конечного результата. Я представляю, что это список, но это не должно быть.
Мне известно о prop.table (table (), margins = 1/2), janitor :: tabyl (), gmodels: : CrossTable (), stats :: xtabs, Deducer :: contingency.tables, а также http://pcwww.liv.ac.uk/~william/R/crosstab.r. Проблема, которую я имею с каждым из этих пакетов, заключается в том, что они принимают отдельные наблюдения в качестве входных данных, и я не могу заставить их работать с агрегированными подсчетами.
Бонус: в дополнение к процентам было бы неплохо переформатировать фрейм данных в таблицу отсчетов, которая будет выглядеть так же, как я показал, но для подсчетов исходного фрейма данных.