Я нашел следующий код из опубликованной статьи.В этом конкретном случае я бы сказал, что стратегия работает хорошо, поскольку она ясна и переменных относительно мало.Тем не менее, код "немного" повторяется, и мне интересно, есть ли менее повторяющийся способ сделать это, который все еще соответствовал бы стилю и образу жизни dplyr
.
Контрольный пример:
set.seed(42)
df <- data.frame(GR=sample(1:2, 100, replace=TRUE),
as.data.frame(replicate(20, rnorm(100))))
names(df)[-1] <- LETTERS[1:20]
Теперь таблица сгруппированных означает использование aggregate
:
aggregate(df[,-1], df[1],mean)
... и с dplyr
:
df %>% group_by(GR) %>% summarize(mean.A=mean(A),
mean.B=mean(B),
mean.C=mean(C),
mean.D=mean(D),
mean.E=mean(E),
# skipped 14 rows
mean.T=mean(T))
Есть ли DRY способ сделать это в dplyr
?Я знаю, что все инструменты программирования в R также доступны в dplyr
- поэтому вопрос не в том, КАК это сделать ... скорее, я ищу идиоматический способ сделать это dplyr
.Я видел подобные, но гораздо более длинные примеры в реальной жизни.