У меня есть этот df:
boxChange sameCat
# C1 > C2 TRUE
# C1 > C2 TRUE
# A0 > A1 TRUE
# A1 > E4 FALSE
# C3 > E6 FALSE
# E0 > E3 TRUE
# ... ...
Я бы хотел сгруппировать по обоим столбцам, посчитать вхождения и расположить их по количеству Используя dplyr
, я бы пошел так:
df2 <- df %>%
group_by(boxChange, sameCat) %>%
summarise(occs = n()) %>%
arrange(desc(occs))
Получение:
boxChange sameCat occs
# C1 > C2 TRUE 312
# A0 > A1 TRUE 189
# E0 > E3 TRUE 13
# C3 > E6 FALSE 123
# A1 > E4 FALSE 70
Теперь я хотел бы вычислить процент каждого occs
по отношению к общему и совокупному проценту, получив что-то вроде этого
boxChange sameCat occs perc cump
# C1 > C2 TRUE 312 44 44
# A0 > A1 TRUE 189 27 71
# E0 > E3 TRUE 13 2 73
# C3 > E6 FALSE 123 17 90
# A1 > E4 FALSE 70 10 100
Я пробовал со следующим
df2 <- df %>%
group_by(boxChange, sameCat) %>%
summarise(occs = n()) %>%
arrange(desc(occs)) %>%
mutate(perc = occs/sum(occs)*100) %>%
mutate(cump = cumsum(perc))
Но вывод выглядит следующим образом
boxChange sameCat occs perc cump
# C1 > C2 TRUE 312 100 100
# A0 > A1 TRUE 189 100 100
# E0 > E3 TRUE 13 100 100
# C3 > E6 FALSE 123 100 100
# A1 > E4 FALSE 70 100 100
Я не могу понять, почему это так, и не смог найти ни одного другого потока, сообщающего о подобной проблеме. Есть ли у вас понимание?