我有一个数据框。在这个框架中有一个特别感兴趣的2列。
让我们称之为分数和分组
我想找到每组得分的平均值 我知道我可以这样做
mean(子集(mydata $ Score,mydata $ Group> 10& mydata $ group< 20))
它给出了组值在10到20之间的行的平均值
现在的问题是,对于那个特定的子组,它可以正常工作,但我必须根据稍微复杂的条件将其应用于数百个 可以说,Group可以有1000个不同的值,所以我可以这样做 mean(子集(mydata $ Score,mydata $ Group == X))
但是X正在改变,我需要为每个人保存,这是一个很好的方法吗?
答案 0 :(得分:1)
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,而这可以是任何范围,无论是范围还是多个条件
然后还可以操纵得分以及内线
如果有人有更好的方法,请添加,但我认为这符合我目前的需求。