Create a ranking variable with dplyr?

后端 未结 2 824
生来不讨喜
生来不讨喜 2020-12-04 16:24

Suppose I have the following data

df = data.frame(name=c(\"A\", \"B\", \"C\", \"D\"), score = c(10, 10, 9, 8))

I want to add a new column w

相关标签:
2条回答
  • 2020-12-04 17:07

    Other solution when you need to apply the rank to all variables (not just one).

    df = data.frame(name = c("A","B","C","D"),
                    score=c(10,10,9,8), score2 = c(5,1,9,2))
    
    select(df, -name) %>% mutate_all(funs(dense_rank(desc(.))))
    
    0 讨论(0)
  • 2020-12-04 17:20

    It sounds like you're looking for dense_rank from "dplyr" -- but applied in a reverse order than what rank normally does.

    Try this:

    df %>% mutate(rank = dense_rank(desc(score)))
    #   name score rank
    # 1    A    10    1
    # 2    B    10    1
    # 3    C     9    2
    # 4    D     8    3
    
    0 讨论(0)
提交回复
热议问题