使用多个FUN(平均值,最小值,SD)在R中聚合数据帧

时间:2016-10-01 15:13:08

标签: r

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

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

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

2 个答案:

答案 0 :(得分:3)

另一个选项是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))

答案 1 :(得分: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