Я хотел бы, чтобы код создавал сводную таблицу, в которой несколько средних рассчитывались на основе двух критериев (то есть уровней факторных переменных). Эти уровни находятся в соответствующих столбцах, но я хотел бы разрезать их на свои собственные столбцы таблицы, а также создать общий столбец (т. Е. Среднее значение обоих уровней, вместе взятых). У меня есть следующий пример кода:
Я хочу использовать таблицу для аккуратной сводки данных для уценки и, возможно, преобразовать в слово.
Depth<-c('0', '0.1-2.0', '2.1-10.0', '10.1-20.0', '20.1-
50.0', '50.1-100.0', '0', '0.1-2.0', '2.1-10.0', '10.1-20.0',
'20.1-50.0', '50.1-100.0')
Tag<- c('Tag.1', 'Tag.1', 'Tag.1', 'Tag.1',
'Tag.1', 'Tag.1', 'Tag.2', 'Tag.2', 'Tag.2',
'Tag.2', 'Tag.2', 'Tag.2')
Proportion<- c(2.287356322, 5.896551724, 9.528735632,
7.229885057, 73.54022989, 1.517241379, 0.5, 86.3, 13.2,
0.1, 0.1, 0.1)
Season<- c('Autumn', 'Autumn', 'Autumn', 'Autumn',
'Autumn', 'Autumn', 'Summer', 'Summer', 'Summer',
'Summer', 'Summer', 'Summer')
df<-data.frame(Depth, Tag, Proportion, Season)
, из которого я могу создать следующую таблицу:
library(knitr)
df$Proportion<-as.numeric(df$Proportion)
df$Depth<-as.factor(df$Depth)
tt1<-df%>%
group_by(Season, Depth)%>%
summarise(Mean=mean(Proportion))
kable(tt1)
|Season |Depth | Mean|
|:------|:----------|---------:|
|Autumn |0 | 2.287356|
|Autumn |0.1-2.0 | 5.896552|
|Autumn |10.1-20.0 | 7.229885|
|Autumn |2.1-10.0 | 9.528736|
|Autumn |20.1-50.0 | 73.540230|
|Autumn |50.1-100.0 | 1.517241|
|Summer |0 | 0.500000|
|Summer |0.1-2.0 | 86.300000|
|Summer |10.1-20.0 | 0.100000|
|Summer |2.1-10.0 | 13.200000|
|Summer |20.1-50.0 | 0.100000|
|Summer |50.1-100.0 | 0.100000|
Но дальнейшая сводка будет полезна читателю (т. Е. В таблице будет только четыре столбца: 1 Глубина, 2 Среднее значение, 3 Среднее значение и 4 Всего)
Я пытался:
ttt1<-df%>%
group_by(Depth)%>%
mutate(meanAut=case_when(Season=='Autumn' ~
summarise(mean(Proportion))))%>%
mutate(meanSum=case_when(Season=='Summer' ~
summarise(mean(Proportion))))%>%
bind_rows(summarise_all(., funs(if(is.numeric(.)) sum(.) else "Total")))
Но получите ошибку:
Ошибка в mutate_impl (.data, точки): Ошибка оценки: нет применимого метода для 'summarise_', примененного к объекту класса "c ('double', 'numeric')".
Ожидаемый результат:
Depth meanAut meanSum Total
0 2.2 NA 2.2
0.1-2.0 5.8 86.3 46.05
10.1-20.0 7.2 0.1 3.65
2.1-10.0 9.5 13.2 11.35
20.1-50.0 73.5 0.1 36.8
50.1-100.0 1.5 0.1 0.8
Буду признателен за любые советы по форматированию таблицы!