Я не знаю, не ищу ли я правильные условия, но я не могу найти сообщение об этом.Группировка и суммирование кадра данных несколькими разными столбцами в R
У меня есть ДФ:
df <- data.frame(grouping_letter = c('A', 'A', 'B', 'B', 'C', 'C'), grouping_animal = c('Cat', 'Dog', 'Cat', 'Dog', 'Cat', 'Dog'), value = c(1,2,3,4,5,6))
Я хочу к группе grouping_letter
и grouping_animal
. Я хочу сделать это, используя dplyr
.
Если бы я сделал это отдельно, это было бы:
df %>% group_by(grouping_letter) %>% summarise(sum(value))
df %>% group_by(grouping_animal) %>% summarise(sum(value))
Теперь допустим, у меня есть сотни столбцов мне нужно сгруппировать по отдельности. Как я могу это сделать?
Я пытался:
results <- NULL for (i in grouping_columns) { results[[i]] <- df %>% group_by(df$i) %>% summarize(sum(value)) }
Я получил список, названный результаты с выходом. Мне интересно, есть ли лучший способ сделать это вместо использования for-loop?
Я пробовал это на df из 11M строк, 12 значений cols и 6 группирующих vars. Выполнение очень долгого цикла завершено намного быстрее! – vagabond
@vagabond Тогда преобразование из 'wide' в 'long' может занять немного времени по сравнению с методом цикла. Вы пробовали опцию 'lapply'? – akrun
Да, это тот, который занимает очень долго! – vagabond