我有一个像这样的数据框
Name Value
A. -5
B. 100
F. 0
G. -5
我想按升序对数据进行排序并添加排名列。所以我想要这样的东西:
Name. Value. Rank
A. -5. 1
G. -5. 1
F. 0. 2
B. 100. 3
答案 0 :(得分:1)
基础R解决方案可能是:
v1 <- order(df$Value)
data.frame(df[v1, ], rank = as.numeric(factor(df$Value[v1])))
# Name Value rank
#1 A. -5 1
#4 G. -5 1
#3 F. 0 2
#2 B. 100 3
使用order
对数据框进行排序,并将已排序的Value
转换为factors
,然后转换为numeric
,以便具有相同值的Value
获得相同的排名。
答案 1 :(得分:0)
使用index.php?module={$module}&item={$item}
包可以轻松实现这一目标。
dplyr
#Recreate the data
df <- read.table(text = "Name Value
A. -5
B. 100
F. 0
G. -5", header = TRUE)
library(dplyr)
df %>% arrange(Value) %>% mutate(Rank = dense_rank(Value))
函数读取数据框dplyr
,然后按df
排列,然后添加新列Value
,等于密集排名{{1 }}