对数据框中的数据进行排序并对其进行排名

时间:2017-05-10 00:11:28

标签: r sorting dataframe

我有一个像这样的数据框

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

2 个答案:

答案 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 }}