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

R语言如何从Excel数据集随机抽取指定类别对应的行数据

R实现随机抽取Station类别全量行的方案

你可以按照以下步骤实现需求,针对大数据集也提供了提速方案:

步骤1:读取Excel数据

推荐使用readxl包读取Excel文件,相比其他工具内存占用更低:

# 安装依赖包(首次使用执行)
install.packages(c("readxl", "dplyr"))

# 加载包
library(readxl)
library(dplyr)

# 替换为你的实际文件路径读取数据
df <- read_excel("你的数据文件路径.xlsx")

步骤2:实现100次重复随机抽取

逻辑为:先提取所有Station的唯一取值,每次随机选1个取值,再筛选对应取值的全部行,最终100次结果存在列表中方便后续分析:

# 提取Station列的所有唯一取值
station_unique <- unique(df$Station)

# 设置随机种子,保证结果可复现,不需要复现可以删除该行
set.seed(123)

# 执行100次抽取,结果存储在result_list中
result_list <- lapply(1:100, function(i) {
  # 随机抽取1个Station取值
  selected_station <- sample(station_unique, size = 1)
  # 筛选该Station对应的全部行
  filter(df, Station == selected_station)
})

结果使用说明

  • 你可以通过result_list[[n]]提取第n次抽取的数据集,比如result_list[[1]]就是第一次的抽取结果,可直接用于后续分析
  • 如果需要记录每次抽取的Station名称,可以修改返回结构:
    result_list <- lapply(1:100, function(i) {
      selected_station <- sample(station_unique, size = 1)
      list(
        station_name = selected_station,
        data = filter(df, Station == selected_station)
      )
    })
    
  • 如果要求100次抽取的Station不重复,只需将sample(station_unique, size = 1)修改为sample(station_unique, size = 100, replace = FALSE)[i]即可,注意该设置要求你数据中Station的唯一值数量≥100

大数据集提速方案

如果你的数据集规模极大,普通dplyr处理较慢,可以使用data.table包优化速度:

# 安装依赖包(首次使用执行)
install.packages("data.table")

library(data.table)
# 将数据转为data.table格式并设置索引,大幅提升筛选速度
dt <- as.data.table(df)
setkey(dt, Station)

# 100次抽取逻辑
result_list_dt <- lapply(1:100, function(i) {
  selected_station <- sample(station_unique, size = 1)
  dt[Station == selected_station]
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:00:04