在 tibble R 的截止范围内随机采样

Sample randomly within cutoff in tibble R

我在 R 中有 100 分,如下:

preds <- tibble(x=1:100, y=seq(from=0.01,to=1,by=0.01))

我想随机抽取 20 个值小于 0.5 的观测值。目前,我可以通过以下方式 select 前 20 个观察结果:

number_of_likely_negatives<-20

likely_negatives <- preds %>% 
    arrange(y) %>% 
    slice(1:number_of_likely_negatives)

但是我如何随机 select 20 个 y 值低于 0.5 的观测值?

我们可能 filtersliceing

之前的 'y' 值
likely_negatives <- preds %>% 
    arrange(y) %>% 
    filter(y < 0.5) %>%
    slice(sample(seq(number_of_likely_negatives), 20, replace = FALSE))

我们也可以用slice_sample

preds %>% 
   arrange(y) %>%
   filter(y < 0.5) %>% 
   slice_sample(n = number_of_likely_negatives)

直接回答:

preds %>% 
  slice(
    sample.int(which(y>threshold)[1], size = number_of_likely_negatives, replace = TRUE)
  )

您可以使用以下代码:

library(dplyr)
sample_n(preds[preds$y < 0.5,], 20)

输出:

# A tibble: 20 × 2
       x     y
   <int> <dbl>
 1    42  0.42
 2    18  0.18
 3    44  0.44
 4    17  0.17
 5     7  0.07
 6    38  0.38
 7    23  0.23
 8    27  0.27
 9    20  0.2 
10     6  0.06
11    35  0.35
12    11  0.11
13     9  0.09
14    34  0.34
15    30  0.3 
16    29  0.29
17    39  0.39
18     3  0.03
19    13  0.13
20    47  0.47