У меня есть большие наборы данных, которые для «первого запуска» требуют базовых c частот для группы (группы помечены 1 или 0 в столбцах). Проблема в том, что некоторые из базовых c частот предназначены для очень большого числа переменных (180 или около того), которые не имеют имен с префиксом Speci c и не расположены, скажем, в столбцах 2: 100. Они могут быть в столбцах 2:80, а затем сказать 90: 117 и т. Д. c.
Я получаю базовую c суть этого, что-то вроде этого:
mtcars %>% filter(gear == 4) %>% group_by(am) %>% summarise(n=n()) %>% mutate(perc = n / sum(n)*100)
Одна проблема заключается в том, что все мои 3-5 групп помечены в отдельных столбцах, поэтому я потребуется использовать фильтр (pop1 == 1), фильтр (pop2 == 1) и т. д. c. Но есть ли способ для group_by go через 180 переменных с выходом для каждой переменной? Это просто простая частота значений каждой переменной или отсутствует. Таким образом, для mtcars частота будет равна просто am, а затем просто против. Было бы хорошо, если бы вывод был один длинный с двумя столбцами.
Примерно так:
Variable Value n Perc
am 0 4 33.3
am 1 8 66.7
vs 0 2 16.7
vs 1 10 83.3
Я понимаю, что это может включать сбор или pivot_longer, но я не смог найти способ преобразовать только 180 переменных, скажем, из 200, для которых мне нужны частоты.
Редактировать:
В итоге я использовал это, чтобы выбрать для многих столбцов:
positions <- c(4:176,198)
И использовал select (позиции), чтобы обойти ввод всех переменных.