You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中从数据框抽取未被采样过的新样本

解决方法

情况1:已抽取第一份样本(sample),需排除后抽取新样本

由于原数据exec_names的每行是唯一个体(即使execid重复,行索引仍有区分),可通过以下两种方式实现:

基础R实现

先定位原数据中未被抽中的行,再从中抽样:

# 获取原数据中不在已抽样本里的行索引
remaining_rows <- which(!rownames(exec_names) %in% rownames(sample))
# 从剩余行中抽取100行
new_sample <- exec_names[sample(remaining_rows, 100), ]

dplyr包实现(更直观)

若习惯使用tidyverse工具,用anti_join筛选未被抽样的行后再抽取:

library(dplyr)
# 筛选原数据中不在已抽样本内的所有行
remaining_data <- anti_join(exec_names, sample, by = c("execid", "exec_fname", "coname_execucomp"))
# 从剩余数据中抽取100行
new_sample <- remaining_data %>% sample_n(100)

注意:如果数据存在完全重复的行(所有列值均一致),anti_join会排除所有重复项,此时建议用行索引的方法更精准。

情况2:提前规划抽样(更稳妥)

如果还未抽取第一份样本,或想重新规范流程,可先生成全局随机索引分组,确保两份样本完全不重叠:

# 生成所有行的随机顺序索引
all_indices <- sample(nrow(exec_names))
# 第一份100行样本
sample1 <- exec_names[all_indices[1:100], ]
# 第二份100行样本(从剩余行中选取)
sample2 <- exec_names[all_indices[101:200], ]

这种方式从根源避免了重复抽样问题,适合需要多份独立不重叠样本的场景。

内容的提问来源于stack exchange,提问作者bear_525

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:22:16