Кросс-табуляция двух вопросов с несколькими ответами - PullRequest
0 голосов
/ 30 октября 2019

Я хотел бы скрестить два столбца данных, каждый из которых содержит несколько вариантов ответов в каждой ячейке.

Вот пример

water                                    treatment
-----                                    ---------
Municipal water, surface water           Untreated
Well/Groundwater                         Untreated
Municipal water                          Untreated
Municipal water                          Reverse osmosis
Well/Groundwater                         Sediment / solids filter,Ultraviolet light
Municipal water                          Reverse osmosis
Municipal water                          Sediment / solids filter,Activated charcoal filter,Ultraviolet light,Chlorine filter
Well/Groundwater                         Sediment / solids filter
Well/Groundwater                         Untreated
Municipal water                          Reverse osmosis,Ultraviolet light
Well/Groundwater                         Untreated
Collected rainwater                      Sediment / solids filter,Activated charcoal filter
Collected rainwater                      Untreated

Я хотел бы объединить эти два столбца в кросс-таблицы, но в то же время разгруппировать их и считать только вхождения каждого варианта, а невозникновение каждой комбинации выбора. Каждый столбец имеет потенциал для более чем одного ответа. Я нашел несколько примеров с использованием aggregate () , но это было для столбца с несколькими ответами (более одного возможного ответа) и обычного столбца с несколькими вариантами ответов (только один возможный ответ). Кроме того, их данные были расположены иначе, чем мои.

Я нашел решение, чтобы суммировать частоту каждого выбора для каждого столбца в отдельности с выводом, который выглядит следующим образом:

column = micro.data$water.source  
dat = data.frame(column)
dat$X = as.numeric(1:nrow(dat))
names(dat) = c("choices","id")
n = length(column)

str(dat)

numchoices = dat$choices %>% str_split("\\;|,") %>% unlist

(num.tab = as.data.frame(table(numchoices)))

(num.tab <- transform(num.tab, numchoices = reorder(numchoices, Freq, decreasing = T)))
                    numchoices Freq
1          Collected rainwater    5
2                    Greywater    1
3              Municipal water   52
4                        Other    1
5 Surface water (lake or pond)    2
6             Well/Groundwater   57

Однако, Я ищу какой-то вывод, как это:

Кросс-табуляция вариантов с подсчетами для каждого

...