【问题标题】:summarizing data in cross-table with grouped_by variable in columns使用列中的 grouped_by 变量汇总交叉表中的数据
【发布时间】:2017-05-09 18:12:35
【问题描述】:

我正在尝试跨两个变量汇总数据,summary 的输出非常粗大(至少在 r 笔记本输出中,表格跨越多个页面)。我希望将一个变量作为汇总输出的行,将另一个作为列,然后在实际表中显示行和列数据的每种组合的平均值 一些示例数据:

 dat1 <- data.frame(
    category = rep(c("catA", "catB", "catC"), each=4),
    age = sample(1:2,size=4,replace=T),
    value = rnorm(12)
 )

然后我通常会得到这样的摘要数据框:

dat1 %>% group_by(category,age)%>% summarize(mean(value))

看起来像这样:

但我的实际数据每个变量都有 10 多个级别,所以表格很长且难以阅读。 我更喜欢这样的东西,我使用以下方法创建:

dat1 %>% group_by(category)
%>% summarize(mean.age1 =mean(value[age==1]),
mean.age2 =mean(value[age==2]))

一定有比手工编码更好的方式吗?

【问题讨论】:

    标签: r dplyr tidyr


    【解决方案1】:

    您只需要使用tidyr 并执行以下操作:

    library(dplyr)
    library(tidyr)
    dat1 %>%
      group_by(category, age) %>%
      summarise(mean = mean(value)) %>%
      spread(age, mean, sep = '')
    

    输出如下:

    Source: local data frame [3 x 3]
    Groups: category [3]
    
      category      age1      age2
    *   <fctr>     <dbl>     <dbl>
    1     catA 0.2930104 0.3861381
    2     catB 0.5752186 0.1454201
    3     catC 1.0845645 0.3117227
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-09
      • 1970-01-01
      • 2014-04-19
      • 2022-06-16
      • 2021-03-06
      • 1970-01-01
      • 2019-01-27
      相关资源
      最近更新 更多