【发布时间】:2019-03-24 09:08:30
【问题描述】:
我想要创建一个汇总表的代码,其中根据两个标准(即因子变量的水平)计算多个平均值。这些级别在各自的列中,但我想将它们切成自己的表列,并创建一个总列(即两个级别的平均值)。我有以下示例代码:
我想使用一个表格来为 markdown 提供一个简洁的数据摘要,并可能转换为 word。
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 Depth、2 MeanAut、3 MeanSum 和 4 Total)
我试过了:
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, dots) 中的错误:评估错误:没有适用于“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
任何关于如何格式化表格的建议都将不胜感激!
【问题讨论】:
-
你能提供预期的输出吗?
-
抱歉,现在包括预期输出