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

R语言:为特定ID案例生成固定比例的二元随机列

嘿,我懂你要的是什么——不是那种泛泛的随机生成0/1的通用方案,而是专门针对ID=1的特定案例,严格按照你指定的固定比例(比如2个0、4个1)来分配二元值,而且要明确生成0或1对吧?下面用Python pandas给你写个精准的实现方案:

针对ID=1案例的固定比例二元值分配方案

1. 先定位ID=1的行

首先我们要把数据框中ID等于1的行筛选出来,避免影响其他行的数据:

import pandas as pd
import numpy as np

# 假设你的数据框名为df
id1_subset = df[df['ID'] == 1].copy()

2. 构造固定比例的二元数组

根据你需要的比例(比如2个0、4个1),直接创建对应数量的0和1,再打乱顺序实现随机分配:

# 按需求定义0和1的数量
zero_num = 2
one_num = 4

# 拼接成完整的二元列表
binary_values = [0]*zero_num + [1]*one_num

# 打乱顺序,让0和1随机分布
np.random.shuffle(binary_values)

3. 将值赋值回原数据框

给原数据框新增一列(比如叫prevalence),只给ID=1的行赋值,其他行可以设为NaN或者你需要的默认值:

# 新增列并初始化默认值
df['prevalence'] = np.nan

# 精准赋值给ID=1的行
df.loc[df['ID'] == 1, 'prevalence'] = binary_values

方案优势

  • 完全**针对特定案例(ID=1)**操作,不会干扰其他行的数据
  • 严格保证你要的固定比例,不会出现随机生成时比例偏差的情况
  • 通过打乱顺序实现了“随机分配”的要求,同时比例精准可控

灵活调整比例的扩展方式

如果ID=1的案例数量变化,或者你需要按百分比定义比例(比如30%的0、70%的1),可以用下面的方式动态计算数量:

total_id1_cases = len(id1_subset)
# 按百分比计算0的数量,比如30%
zero_num = int(total_id1_cases * 0.3)
one_num = total_id1_cases - zero_num

# 后续步骤和上面一致
binary_values = [0]*zero_num + [1]*one_num
np.random.shuffle(binary_values)
df.loc[df['ID'] == 1, 'prevalence'] = binary_values

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:11:01