如何找到不止一个接近另一个值的值?

时间:2019-01-29 02:00:08

标签: r dataframe dplyr subset

我知道要获取最接近0的值,我可以使用以下代码:

filter(abs(x-0)==min(abs(x-0)))

...以x为载体。如何检索最接近两个值的0?

3 个答案:

答案 0 :(得分:1)

tt <- sample(-200:200, 20)
tt[order(abs(tt), decreasing = F)][1:2]

喜欢吗?

答案 1 :(得分:1)

您不能只使用sort()吗?

set.seed(1)
x <- rnorm(10)
sort(abs(x-0))[1:2]
#> [1] 0.1836433 0.3053884

reprex package(v0.2.1)于2019-01-28创建

我也认为-0不会为您做任何事情,因此可以abs(x)做。

答案 2 :(得分:1)

这是dplyr版本;您可以使用top_n获取某个字段的n最小(或最大)值:

df = data.frame(x = runif(100, -1, 1))

df %>%
  mutate(dist.from.0 = abs(x - 0)) %>%
  top_n(-2, dist.from.0)