Я пытаюсь суммировать набор данных, группируя по одному столбцу (F1) и получая среднее значение для других столбцов, за исключением того, что другие столбцы разделяются между числовым и множителем уровни. Я могу использовать ddply для суммирования числовых значений F2, но не уверен, как сделать то же самое для уровней факторов в F3. Я попытался захватить многократно повторяющийся множитель факторов по группам, но это не работает.Как суммировать числовые значения и значения уровня фактора одновременно в R
воспроизводимый пример
library(plyr)
set.seed(37)
df<-data.frame("F1"=rep(LETTERS[1:5],each = 3),
"F2"= 1:15,
"F3"= sample(c("Yes","No"), 15, replace=TRUE))
df2 <- ddply(df,~F1,summarise,
mF2=mean(F2),
mF3=tail(names(sort(table(df$F3))), 1))
> df
F1 F2 F3
1 A 1 No
2 A 2 Yes
3 A 3 No
4 B 4 Yes
5 B 5 No
6 B 6 No
7 C 7 Yes
8 C 8 Yes
9 C 9 Yes
10 D 10 Yes
11 D 11 Yes
12 D 12 No
13 E 13 Yes
14 E 14 Yes
15 E 15 No
> df2
F1 mF2 mF3
1 A 2 Yes
2 B 5 Yes
3 C 8 Yes
4 D 11 Yes
5 E 14 Yes
Вместо df2 должен выглядеть следующим образом:
> df2
F1 mF2 mF3
1 A 2 No
2 B 5 No
3 C 8 Yes
4 D 11 Yes
5 E 14 Yes
Я был бы заинтересован попробовать с dplyr или другим способом, если показано, каким образом.
Почему вы используете 'таблицу (ДФ $ F3)' вместо е только 'таблицы (F3)'? Таким образом, вы делаете это для всего набора данных вместо подмножества. Вы можете легко преобразовать свой plyr-код в dplyr, выполнив что-то вроде 'df%>% group_by (F1)%>% summary (mF2 = mean (F2), mF3 = tail (имена (sort (table (F3))) 1)) ' –