MYSQL 或 R 在多个子组内排名

标签 mysql sql r

我有一个像这样的数据模式/csv (cols:id...score),有超过 90000 行,我需要如图所示的排名 - 首先按年份分组,然后按类(class)分组。任何人都可以帮助解决这个问题,无论是在 MYSQL 还是在 R 中

id  Year  class  name    score rank
1   2010  Phy    joe      95    2
2   2010  Phy    amy      98    1
3   2010  Phy    carl     58    3
4   2010  Mat    joe      88    3
5   2010  Mat    amy      100   1
6   2010  Mat    carl     95    2
7   2011  Phy    joe      84    1
8   2011  Phy    amy      25    3
9   2011  Phy    carl     48    2
10  2011  Mat    joe      56    2
11  2011  Mat    amy      85    1
12  2011  Mat    carl     48    3

最佳答案

假设您的数据作为名为 dddata.frame 存储在 R 中,那么您可以按照您定义的方式计算排名

dd$ranks<-with(dd, ave(score, Year, class, FUN=function(x) rank(-x)))

请注意,rank 有多个关系选项,因此您可能需要阅读 ?rank 以了解哪一个适合您。

关于MYSQL 或 R 在多个子组内排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23874552/

相关文章:

python - 我是否需要在执行数据库操作的每个方法中调用 MySQLdb.connect()?

mysql - MySQL Workbench 中的正向工程 EER 图

php - 测试 SQL 注入(inject)查询

mysql - 在 MySQL 中获取基于月/年的所有行条目

mysql - 如何自动将新寄存器从 mysql 表插入到同一数据库上的另一个表?

mysql - 加入多行

mysql - 使用 sum(columnS) 选择不同的列和列

r - 汇总函数的输出

r - 数据框中凌乱的日期格式

r - 在工具提示中显示额外的变量 echarts4r