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