【问题标题】:Aggregate a data frame in R using multiple FUN (mean, min, SD) [duplicate]使用多个 FUN(平均值、最小值、SD)在 R 中聚合数据框 [重复]
【发布时间】:2016-10-01 15:13:08
【问题描述】:

我正在尝试聚合一个数据框以查找特定列与另一列相比的平均值、最小值和 SD。我想汇总学期,只将平均值、标准差和最小值应用于成绩。然后在一个输出中将所有内容显示为列(聚合学期、平均值、最小值、标准差)。这可能吗?下面是示例数据框。

(抱歉数据框的输出,不知道如何在问题中创建表格)

#------------------------------------------
#|Student   |Semester   |Grade  |Name    |
#------------------------------------------
#|1         |9a         |90     |Jim     |
#|2         |9b         |91     |Beth    |
#|3         |9a         |76     |George  |
#|4         |9b         |87     |Phill   |
#------------------------------------------

【问题讨论】:

    标签: r


    【解决方案1】:

    另一个选项是data.table

    library(data.table)
    setDT(df)[, .(Mean = mean(Grade), Max = max(Grade), SD = sd(Grade)), by = Semester]
    

    aggregate

    f1 <- function(x) c(Mean = mean(x), Max = max(x), SD = sd(x))
    do.call(data.frame, aggregate(Grade~Semester, df, f1))
    

    【讨论】:

    • 聚合选项效果很好!谢谢!
    【解决方案2】:

    这是一个例子:

    df <- read.table(header=T, text="
    Student   Semester   Grade  Name    
    1         9a         90     Jim     
    2         9b         91     Beth    
    3         9a         76     George  
    4         9b         87     Phill")
    library(dplyr)
    df %>% group_by(Semester) %>% summarise_at(vars(Grade), funs(mean, max, sd))
    # # A tibble: 2 x 4
    #   Semester  mean   max       sd
    #     <fctr> <dbl> <int>    <dbl>
    # 1       9a    83    90 9.899495
    # 2       9b    89    91 2.828427
    

    【讨论】:

      猜你喜欢
      • 2014-08-09
      • 2020-09-18
      • 1970-01-01
      • 2021-02-01
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2015-11-13
      相关资源
      最近更新 更多