【问题标题】:R - transform output format of dplyr summariseR - dplyr 的转换输出格式汇总
【发布时间】:2015-06-29 17:17:18
【问题描述】:

我非常感谢使用来自dyplrsummarise 生成汇总统计数据。

但是,我并不完全相信输出的“格式”。

例如:

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 的输出格式吗?

【问题讨论】:

    标签: r format output dplyr


    【解决方案1】:

    您可以使用tidyr 中的spread 来扩展您的管道。请注意,我为平均值指定了一个名称,以便可以在 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
    

    【讨论】:

      【解决方案2】:

      我认为reshape2 包的dcast 函数对你有用。

      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
      

      【讨论】:

      • 您不需要使用OPs新转换的数据集,只需dcast(mtcars, gear ~ vs, value.var = "disp", mean)mtcars就可以达到想要的结果
      猜你喜欢
      • 2023-02-10
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      相关资源
      最近更新 更多