r - 向数据框添加排名列

标签 r ranking

这似乎必须是一项非常常见的任务,但是我在 google 或 SO 中找不到解决方案。我想根据“order.scores”应用于“dat”的顺序向“dat1”添加一个名为“rank”的列。我尝试使用 row.names(),但 rownames 基于 'dat',而不是 'dat1'。我也试过 'dat$rank <-rank(dat1)',但这会产生错误信息。

fname<-c("Joe", "Bob", "Bill", "Tom", "Sue","Sam","Jane","Ruby")
score<-c(500, 490, 500, 750, 550, 500, 210, 320)
dat<-data.frame(fname,score)
order.scores<-order(dat$score,dat$fname)
dat1<-dat[order.scores,]

最佳答案

您可以按如下方式根据排序计算排名:

dat$rank <- NA
dat$rank[order.scores] <- 1:nrow(dat)
dat
#   fname score rank
# 1   Joe   500    5
# 2   Bob   490    3
# 3  Bill   500    4
# 4   Tom   750    8
# 5   Sue   550    7
# 6   Sam   500    6
# 7  Jane   210    1
# 8  Ruby   320    2

关于r - 向数据框添加排名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24938172/

相关文章:

r - 如何选择 R 矩阵中的唯一列

r - 如何使用r中的map函数查找范围和分位数

重新索引和填充 R 数据帧

sql - 女士 Access 排名前三名

xml - XMLDocument 内容类对象的 Xpath 错误

r - RMarkdown 中的编号代码块

mysql - 将玩家统计数据与时间一起存储在mysql中,以获得最近30天最高值的排名

python - Pandas 的条件排名

MySQL - 如何消除排名中的重复用户?

python - 在python中以升序和降序排列CSV数字