使用R选择重复值中的第二或第三位

Choose second or third rank in repeated value using R

我有 x 的一些值:

x <- c(12, 5, 6, 7, 8, 5, 8, 7, 5, 6, 9, 10)
p <- x[order(x)]
p
[1]  5  5  5  6  6  7  7  8  8  9 10 12

x的最小值是5,但我想选择最小x的第二个(6)或第三个(7)。

如何获取?

我们可以编写一个函数来获取第 n 个最小值,方法是仅考虑已排序向量 punique 个值。

get_nth_smallest_value <- function(n) {
   unique(p)[n]
}

get_nth_smallest_value(2)
#[1] 6

get_nth_smallest_value(4)
#[1] 8

或者如果我们只需要 x,我们可以先 sort 它们,只取 unique 个值,然后通过它的索引获取值。

get_nth_smallest_value <- function(n) {
  unique(sort(x))[n]
}

get_nth_smallest_value(2)
#[1] 6

get_nth_smallest_value(3)
#[1] 7