【问题标题】:R - extracting value by rankR - 按等级提取值
【发布时间】:2016-12-15 04:22:25
【问题描述】:

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

Name  Value
A       2
B       2
C       5
D       5
E      10
F      12

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

我非常感谢任何指导,因为我已经尝试了多种方法来完成此操作并且不断收到某种错误。

【问题讨论】:

  • 请提供您的最佳尝试的代码和具体错误

标签: r function rank


【解决方案1】:

我们可以将Value 转换为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

如果我们需要输出为character,我们可以将其包装在as.character

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

【讨论】:

    【解决方案2】:

    您可以使用match 对唯一值集进行索引:

    get_rank <- function(r) df$Name[match(df$Value, unique(df$Value)) == r]
    
    get_rank(2)
    ## [1] C D
    ## Levels: A B C D E F
    

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 2010-11-27
      相关资源
      最近更新 更多