我正在尝试聚合数据框,以查找特定列与另一列相比的平均值,最小值和标准差。我想聚合学期,只将平均值,标准差和分钟应用于成绩。然后将所有输出显示为列(聚合 - 学期,平均值,分钟,SD)。这可能吗?下面是示例数据框。
(抱歉输出数据框,不知道如何在问题中创建表格)
#------------------------------------------
#|Student |Semester |Grade |Name |
#------------------------------------------
#|1 |9a |90 |Jim |
#|2 |9b |91 |Beth |
#|3 |9a |76 |George |
#|4 |9b |87 |Phill |
#------------------------------------------
答案 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