У меня есть длинный набор данных с одной строкой на каждого человека, сгруппированного по школам. Каждая строка имеет упорядоченный множитель {1, 2, 3, 4}, «кошки». Я хочу получить процент 1, 2, 3 и 4 в каждой школе. Набор данных выглядит следующим образом:dplyr: Подсчет/Процент факторов, сгруппированных по школой, не сгруппированных
school_number cats
1 10505 3
2 10505 3
3 10502 1
4 10502 1
5 10502 2
6 10502 1
7 10502 1
8 10502 2
10 10503 3
11 10505 2
Я пытался что-то вроде этого:
df_pcts <- df %>%
group_by(school_number) %>%
mutate(total=sum(table(cats))) %>%
summarize(cat_pct = table(cats)/total)
, но общую переменную, полученный на стадии мутируют() помещает великое общее количество строк в каждой строке. Я даже не могу дойти до финального шага. Я смущен.
P.S. В некоторых других постах я видел такие строки:
n = n()
, когда я делаю, что я получаю сообщение о том,
Error in n() : This function should not be called directly
Откуда это взялось?
ТИА
, что выход нужно? отдельные столбцы для 1,2,3 кошек или отдельные строки для каждой комбинации школы/кошки? – jalapic
Вы также можете использовать 'df%>% group_by (school_number, cats)%>% summary (n = n())%>% mutate (pct = 100 * n/sum (n))' – akrun
Не могли бы вы ввести просто ' mutate' в ваш сеанс и подтвердите, является ли последняя строка вывода «<среда: namespace: dplyr>»? Если выход - это '<среда: namespace: plyr>', то это именно та проблема: как-то plyr загрузился после загрузки dplyr (и мутация plyr не обращает внимания на group_by). Это обычная причина (хотя и не единственная) проблемы «group_by не работает». –