R - 变换输出格式的dplyr汇总

时间:2015-06-29 17:17:19

标签: r format output dplyr

我非常感谢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的输出格式?

2 个答案:

答案 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