如何根据另一列定义的组计算一列的排名?
Windows 7 上的 R 版本 2.11.1 32 位
我得到如下数据集:
USER_A USER_B SCORE
1 6 0.2
1 7 0.1
1 10 0.15
2 6 0.2
2 9 0.12
3 8 0.15
3 9 0.3
USER_A 为 1:3,USER_B 为 6:10。现在我需要输出 USER_A 和 USER_B 按 SCORE 的排名:
USER_A ranking of USER_B
1 3 1 2 #the ranking of USER_B 6,7,10(which belong to USER_A 1)
2 2 1 #the ranking of USER_B 6,9(which belong to USER_A 2)
3 1 2 #the ranking of USER_B 8,9(which belong to USER_A 3)
事实上,我只需要输出排名:
3 1 2
2 1
1 2
很沮丧,因为每行的长度不同!我无法将它们存储在矩阵中然后输出它们。
有人能帮我解决这个问题吗?
R Version 2.11.1 32-bit on Windows 7
I get a data set as below:
USER_A USER_B SCORE
1 6 0.2
1 7 0.1
1 10 0.15
2 6 0.2
2 9 0.12
3 8 0.15
3 9 0.3
the USER_A is 1:3 and the USER_B is 6:10. Now I need to output the USER_A with the ranking of USER_B by their SCORE:
USER_A ranking of USER_B
1 3 1 2 #the ranking of USER_B 6,7,10(which belong to USER_A 1)
2 2 1 #the ranking of USER_B 6,9(which belong to USER_A 2)
3 1 2 #the ranking of USER_B 8,9(which belong to USER_A 3)
in fact, I just need to output the ranking:
3 1 2
2 1
1 2
it is upset because the length of each row is different! I could not store them in a matrix and then output them.
Could anyone help me solve this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一种方法是分割数据:
最后一行给出:
另一种方法是使用
aggregate()
,如下所示:返回:
但是这里的输出有点不同,现在我们有一个数据框,第二个组件
SCORE
是一个列表,就像输出的lapply()
版本一样:One way is to split the data:
The last line gives:
An alternative is to use
aggregate()
as in:Which returns:
But the output is a bit different here, now we have a data frame, with the second component
SCORE
being a list, just like thelapply()
version outputted: