R - 按等级提取值

Lam*_*ysi 1 r function rank

假设我有一个我根据Value列订购的数据框,现在看起来像这样:

Name  Value
A       2
B       2
C       5
D       5
E      10
F      12
Run Code Online (Sandbox Code Playgroud)

我正在写一个函数,其中一个参数是一个等级(例如rank = 2),我希望输出是相应的名称(例如C&D).任何关系都应该平等排名.

我真的很感激任何指导,因为我已经尝试了多种方法来实现这一点,并继续得到某种错误.

Ron*_*hah 5

我们可以将Valueas 转换为factor然后将其转换numeric为相同数字的等级

getRank <- function(rank) {
  df$Name[as.numeric(factor(df$Value)) == rank]
}

getRank(1)
#[1] A B
#Levels: A B C D E F
getRank(2)
#[1] C D
#Levels: A B C D E F
getRank(3)
#[1] E
#Levels: A B C D E F
Run Code Online (Sandbox Code Playgroud)

如果我们需要输出,character我们可以包装它as.character

getRank <- function(rank) {
  as.character(df$Name[as.numeric(factor(df$Value)) == rank])
}
Run Code Online (Sandbox Code Playgroud)