Мне нужно подвести итог группы переменных после группировки.Есть пара переменных, к которым мне нужно применить разные функции, и около 25 переменных, к которым мне нужно применить одну и ту же функцию.На мой взгляд, это должно быть как-то оптимизировано, чтобы мне не приходилось вручную 25 раз писать имя новой переменной и операцию, которую необходимо выполнить для ее получения.
Я пробовал два варианта через пакет dplyr, но они не увенчались успехом.Мои попытки на примере игрушек представлены ниже:
library('dplyr')
df <- data.frame(letter = c('A', 'A', 'B', 'C', 'A', 'B'),
group = c('group1', 'group1', 'group2', 'group3', 'group1', 'group2'),
var1= c(1,2,3,4,5,6),
var2=c(6,6,6,6,6,6),
var3=c(2,2,2,2,2,2),
var4=c(5,5,5,5,5,5))
var_names <-c('var2', 'var3', 'var4')
groupped <-df%>%
group_by(letter, group)%>%
summarise(var1_mean = mean(var1),
freq = n(),
for (varp in var_names) {
nam <- paste(varp, "_sum", sep = "")
assign(nam, eval(parse(text=paste0("sum(", varp,")"))))
}
)
Я получил ошибку, что assign()
не работает с dplyr, поэтому я попытался с этим:
groupped <- df%>%
group_by(letter, group)%>%
summarise(var1_mean = mean(var1),
freq=n(),
for(i in vars){
nam <- paste0("sum", i)
!!sym(nam) := sum(i)
})
У меня есть идея, как выполнить эту задачу с помощью arrange()
в цикле, привязав столбец за столбцом через cbind()
к df, но это слишком неэффективно, так что простое создание 25 переменных вручную кажется более эффективным :)Есть идеи как автоматизировать этот процесс?