【问题标题】:How to get mean + standard deviation into a single column如何将均值 + 标准差放入单列
【发布时间】:2021-06-19 01:07:52
【问题描述】:

大家好,是否可以将均值和标准差合并到一个列中?

例如,如果我有以下代码;

data %>% 
select(age, gender) %>% 
group_by(gender) %>% 
summarise(mean.age = mean(age), sd.age = sd(age)

这会将每个性别的平均年龄和标准差显示为 2 个单独的列。

如何让它显示为一列,格式类似于“age = 18 ± 2”?

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    您可以将这两个值粘贴在一起。

    library(dplyr)
    
    data %>% 
      group_by(gender) %>% 
      summarise(age = paste(round(mean(age),2), round(sd(age),2) sep = ' ± '))
    

    例如mtcars 数据 -

    mtcars %>% 
      group_by(cyl) %>% 
      summarise(age = paste(round(mean(mpg), 2), round(sd(mpg), 2), sep = ' ± '))
    
    #    cyl age         
    #  <dbl> <chr>       
    #1     4 26.66 ± 4.51
    #2     6 19.74 ± 1.45
    #3     8 15.1 ± 2.56 
    

    【讨论】:

      【解决方案2】:

      我们可以使用glue

      library(dplyr)
      library(glue)
      data %>%
          group_by(gender) %>%
          summarise(age = glue('{round(mean(age), 2)} ± {round(sd(age), 2)}')
      

      mtcars 的可重现示例

      mtcars %>% 
          group_by(cyl) %>% 
          summarise(age = glue('{round(mean(mpg), 2)} ± {round(sd(mpg), 2)}'))
      # A tibble: 3 x 2
          cyl age         
        <dbl> <glue>      
      1     4 26.66 ± 4.51
      2     6 19.74 ± 1.45
      3     8 15.1 ± 2.56 
      

      【讨论】:

        猜你喜欢
        • 2017-08-13
        • 1970-01-01
        • 2017-08-30
        • 2015-03-29
        • 1970-01-01
        • 2020-12-26
        • 2020-04-15
        • 2017-01-31
        • 2019-05-15
        相关资源
        最近更新 更多