如何在R语言的tibble中随机抽取y值小于0.5的20条观测数据
解决R语言中随机抽取符合条件观测的问题
嘿,这个需求很容易调整实现,我来帮你修改代码:
你原来的代码是通过arrange(y)按y值从小到大排序后取前20条,这是有序选取而非随机抽取。要实现随机选取y < 0.5的20条观测,可以结合filter()和slice_sample()来完成,具体步骤如下:
完整代码示例
library(dplyr) # 定义初始tibble preds <- tibble(x=1:100, y=seq(from=0.01,to=1,by=0.01)) number_of_likely_negatives <- 20 # 随机抽取y值小于0.5的20条观测 likely_negatives <- preds %>% filter(y < 0.5) %>% # 第一步:筛选出所有y < 0.5的观测 slice_sample(n = number_of_likely_negatives) # 第二步:从筛选结果中随机抽取指定数量
补充说明
slice_sample()是dplyr 1.0.0及以上版本的推荐函数,专门用于随机抽样;如果你的dplyr版本较低,可能需要用已被弃用的sample_n(),但更建议你升级dplyr到最新版本。- 你的初始数据中,
y < 0.5的观测共有49条(y从0.01到0.49),完全满足抽取20条的需求;如果遇到符合条件的观测数量不足的情况,可以添加replace = TRUE参数允许重复抽样(比如slice_sample(n = number_of_likely_negatives, replace = TRUE))。
这样就能得到真正随机的20条符合条件的数据啦~
内容的提问来源于stack exchange,提问作者MAJ
相关产品推荐
相关产品推荐

