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

Julia分组数据随机抽取组别及组内个体的实现方法咨询

实现代码

你可以直接通过分组采样+组内二次采样两步完成,以下是可直接运行的实现:

首先确保已导入依赖包:

using DataFrames, Random, StatsBase

简洁版实现(推荐)

直接对已创建的GroupedDataFrame对象gb操作即可:

# 可选:设置随机种子保证结果可复现,不需要可删除
Random.seed!(123)

# 第一步:随机抽取2个无重复的分组
sampled_groups = sample(gb, 2, replace=false)

# 第二步:每个抽中的分组内随机抽取2条无重复记录
sampled_result = combine(sampled_groups) do group_df
    sample(group_df, 2, replace=false)
end

运行示例输出(seed=123时)

4×4 DataFrame
 Row │ x1     x2     x3     x4    
     │ Int64  Int64  Int64  Int64 
─────┼────────────────────────────
   1 │     1      2      4      1
   2 │     1      2      3      1
   3 │     1      3      4      3
   4 │     1      2      3      3

仅用标准库的兼容实现

如果不想引入StatsBase依赖,用Julia自带的Random库也可以实现:

using Random, DataFrames
Random.seed!(123)
# 抽2个分组索引
selected_group_idx = sample(1:length(gb), 2, replace=false)
sampled_groups = gb[selected_group_idx]
# 组内抽2行后拼接结果
sampled_result = vcat([df[sample(1:nrow(df), 2, replace=false), :] for df in sampled_groups]...)

注意事项

如果你的场景中可能存在分组行数不足2的情况,可以将组内采样的采样数量修改为min(2, nrow(group_df)),避免采样报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:36:03