在标题r的截止范围内随机取样



我有一个100点的标题,在R:

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

我想随机抽样20个值小于0.5的观测值。目前,我可以选择前20个观测值:

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

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

我们可以在slice之前filter'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)

您可以使用以下代码:

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

直接回答:

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

最新更新