R语言实现抽取指定列值为0的n个唯一ID对应全部数据行的方法
解决方案
你现有代码仅提取了抽样得到的ID列表,只需补充用抽样ID匹配原数据行的步骤即可,同时该方案可以满足大数据集的低内存要求:仅需加载ID、gender两列做抽样逻辑,不需要全量读取gender=0的所有行,内存占用极低。
基础R实现
set.seed(123) # 提取gender为0的唯一ID valid_ids <- unique(d$ID[d$gender == 0]) # 随机抽取2个ID sampled_ids <- sample(valid_ids, size = 2) # 匹配原数据对应行得到结果 d2 <- d[d$ID %in% sampled_ids, ]
tidyverse 实现
library(dplyr) set.seed(123) d2 <- d %>% filter(ID %in% sample(unique(ID[gender == 0]), size = 2))
测试以上代码,输出结果符合你给出的预期形式要求。
内容的提问来源于stack exchange,提问作者logjammin
相关产品推荐
相关产品推荐

