Search code examples
rrankingrank

Rank doesn't start at 1 in R


I want to create a rank variable

Setup

test <- data.frame(column1 = c(5,5,5,6,6,7,7,7,8))
test$rank <- rank(test)

 test
  column1 rank
1       5  2.0
2       5  2.0
3       5  2.0
4       6  4.5
5       6  4.5
6       7  7.0
7       7  7.0
8       7  7.0
9       8  9.0

The answer I want is 1,1,1,2,2,3,3,3,4.


Solution

  • You need to use dense_rank.

    test <- data.frame(column1 = c(5,5,5,6,6,7,7,7,8))
    test$rank <- dplyr::dense_rank(test$column1)
    

    Working of window ranking function

    test %>% rename(input = column1) %>% 
      mutate(row_num_output = row_number(input),
                    rank_output = min_rank(input),
                    dense_rank_output = dense_rank(input))
    

    Output to give a better understanding for your input

    enter image description here