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

R语言如何通过自定义函数按分组采样生成新dataframe

R分组抽样函数实现方案

原有代码问题说明

  • 示例数据的分组列名称为b,代码中误用了不存在的group列,会直接报错
  • filter(group == "aorb")中的aorb加了引号,会被识别为固定字符串,无法读取函数传入的参数值
  • 抽样数量硬编码为10,无法灵活调整每次的抽样量
  • 无需手动指定df_out为dataframe类型:dplyr管道操作返回的结果本身就是dataframe格式,R函数默认会将最后一行运行的对象作为返回值输出

修正后的可运行实现

方法1:自定义函数分别抽取

首先加载依赖包:
library(dplyr)

示例数据构造:

df <- data.frame(var1 = c(rnorm(50,50,10)), b = letters[1:2])

通用函数定义:

random_sample_groups <- function(data, group_col, target_group, n) {
  data %>%
    filter({{group_col}} == target_group) %>%
    sample_n(size = n)
}

调用示例(从两个分组各抽10个观测):

# 抽取分组a的10个观测,生成dataframe df_a
df_a <- random_sample_groups(data = df, group_col = b, target_group = "a", n = 10)
# 抽取分组b的10个观测,生成dataframe df_b
df_b <- random_sample_groups(data = df, group_col = b, target_group = "b", n = 10)

方法2:一次性批量生成两个dataframe

如果不需要单独调整两个分组的抽样量,可以用更简洁的批量处理方式:

library(dplyr)
library(purrr)

sample_res <- df %>%
  group_by(b) %>%
  slice_sample(n = 10) %>%
  group_split()

# 提取两个结果dataframe
df_a <- sample_res[[1]]
df_b <- sample_res[[2]]

运行class(df_a)可确认返回结果为标准dataframe类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:27:03