【发布时间】:2015-06-25 01:32:19
【问题描述】:
我有一个学生分数的数据框,而不是获取每个学生的总体平均分数,我需要按“课程类型”为每个学生获取平均分数,例如,课程 a、c、d 是同一类型,课程 b、e 是同一类型。我通过以下代码做到这一点,但它还不够“R”:
x <- data.frame(a=c(1,2,3), b=c(4,5,6), c=c(6,7,8),
d=c(7,8,9), e=c(10, 11, 12))
group <- data.frame(no=c(1,2,1,1,2), name=c("a", "b", "c", "d","e"))
> x
a b c d e
1 1 4 6 7 10
2 2 5 7 8 11
3 3 6 8 9 12
> group
no name
1 1 a
2 2 b
3 1 c
4 1 d
5 2 e
我认为这有点愚蠢:
x.1 <- x[,as.character(group$name[group$no==1])]
x.2 <- x[,as.character(group$name[group$no==2])]
mean.by.no <- data.frame(x.1.mean=apply(x.1, 1, mean),
x.2.mean=apply(x.2, 1, mean))
【问题讨论】:
标签: r aggregation