我有一个看起来像这样的表
uid gid score
1 a 5
1 a 8
1 a 9
1 b 2
1 b 7
2 a 5
2 a 9
.
.
.
但是每个用户和组都有更多的条目。
我想得到一个表,其中每个 uid/gid 配对都有一行,这是他们最后 5 个分数的平均值。
这在使用数据透视表的 Excel 中是微不足道的,但我需要做一些分析,R 更适合。
所以我希望我的结果看起来像
uid gid top5avg
1 a 4.3
1 b 5.7
2 a 3.5
2 b 6.8
.
.
.
每个 uid gid 对一行,然后是该 uid/gid 对的前五个分数的平均值。
最佳答案
这在 R 中更加微不足道,假设您的数据框称为 dat
并且您真正指的是后 5 分(即使您的示例建议前 5 分):
library(plyr)
ddply(dat,.(uid,gid),summarise,bottom5avg = mean(tail(sort(score),5)))
请注意,此代码假定每组中至少有 5 个观察值。
关于r - 按两个变量对最低分数进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10560437/