r - 按两个变量对最低分数进行分组

标签 r

我有一个看起来像这样的表

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/

相关文章:

r - 在 Shiny 中从 renderDataTable() 下载过滤后的数据

r - 在 R 中的绘图中翻转 X 和 Y 值(数据也改变轴)

r - 在 R 中使变量不可变

r - 在 R 中为箱线图添加名称

r - 如何使用函数在data.table/R 中进行递归计算?

r - 用 tidyr 中的特定值展开每一行

r - 根据字符串的第一个字母对 R 中的类别进行分组?

sql - dplyr:row_number()不适用于sql表(SQLite)

r - 将点添加到配对图中?

R 通过id计算日期变量的连续数