我有一张看起来像这样的桌子
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 个观测值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)