根据R中的条件计算组的平均值

时间:2015-08-04 19:57:53

标签: r

我有一个数据框。在这个框架中有一个特别感兴趣的2列。

让我们称之为分数和分组

我想找到每组得分的平均值 我知道我可以这样做

mean(子集(mydata $ Score,mydata $ Group> 10& mydata $ group< 20))

它给出了组值在10到20之间的行的平均值

现在的问题是,对于那个特定的子组,它可以正常工作,但我必须根据稍微复杂的条件将其应用于数百个 可以说,Group可以有1000个不同的值,所以我可以这样做 mean(子集(mydata $ Score,mydata $ Group == X))

但是X正在改变,我需要为每个人保存,这是一个很好的方法吗?

2 个答案:

答案 0 :(得分:1)

来自基础R的

aggregate,如评论中所述,专门研究此类任务

set.seed(0)
dat <- data.frame(Score=floor(runif(10, 0, 10)),
                  Group=sample(letters[1:3], 10, rep=T))

aggregate(Score ~ Group, data=dat, mean)
#   Group    Score
# 1     a 4.333333
# 2     b 7.666667
# 3     c 5.500000

答案 1 :(得分:0)

我想我找到了解决自己问题的另一种方法。

sapply(1:100,函数(x)中位数(子集(myData $ Score,myData $ Group == x)))

在这种情况下,我只是将条件设为Group == X,而这可以是任何范围,无论是范围还是多个条件

然后还可以操纵得分以及内线

如果有人有更好的方法,请添加,但我认为这符合我目前的需求。