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

R语言中如何为数据集列Y精确分配指定数量的随机1?

问题描述

现有数据集包含X、Y两列,两列的0和1数量完全一致:0有3790个,1有654个。需将Y列调整为精确包含1733个1和2711个0,需从X列值为0的位置中随机选取1079个(1733-654),将对应Y值设为1。尝试以下代码后,每次运行得到的1的数量均不固定,求实现精确数量的方法:

ind <- which(df$X == 0)
ind <- ind[rbinom(length(ind), 1, prob = 1079/3790) > 0]
df$Y[ind] <- 1
解决方案

你用rbinom是按概率随机抽样,抽出来的样本量会随机波动,没法保证刚好选到1079个。要实现精确抽取指定数量的样本,直接用sample()函数即可:

# 筛选所有X列值为0的行索引
ind_x0 <- which(df$X == 0)
# 从这些索引中精确随机选取1079个(无放回抽样)
selected_ind <- sample(ind_x0, size = 1079, replace = FALSE)
# 将选中行的Y列值设为1
df$Y[selected_ind] <- 1

这段代码每次运行都会精准选中1079个X=0的行,加上原有的654个1,Y列的1总数恰好为1733,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:15:50