我非常感谢summarise
使用dyplr
生成摘要统计。
但是,我并不完全相信输出的“格式”。
例如:
mt = mtcars %>%
group_by(gear, vs) %>%
summarise(mean (disp) )
将产生
gear vs mean(disp)
1 3 0 357.6167
2 3 1 201.0333
3 4 0 160.0000
4 4 1 115.6200
5 5 0 229.3250
6 5 1 95.1000
对于我的科学报告,我更喜欢像这样显示输出(无论这个mtcars
示例的统计含义如何):
gear Mean Vs = 1 Mean Vs = 0
3 201.0333 357.6167
4 115.6200 160.0000
5 95.1000 229.3250
您知道是否可以“控制”dplyr summarise
的输出格式?
答案 0 :(得分:4)
您可以使用spread
中的tidyr
来扩展您的管道。注意,我为平均值指定了一个名称,因此可以在spread
调用中引用它。
library(dplyr)
library(tidyr)
mtcars %>%
group_by(gear, vs) %>%
summarise(mean_disp = mean (disp) ) %>%
spread(vs, mean_disp)
Source: local data frame [3 x 3]
gear 0 1
1 3 357.6167 201.0333
2 4 160.0000 115.6200
3 5 229.3250 95.1000
答案 1 :(得分:2)
我认为dcast
包的reshape2
功能对您有用。
library(reshape2)
dcast(mt, gear ~ vs)
Using mean(disp) as value column: use value.var to override.
gear 0 1
1 3 357.6167 201.0333
2 4 160.0000 115.6200
3 5 229.3250 95.1000