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

如何随机替换因子中指定类别5%的取值?

随机修改数据框中指定类别的部分样本值

原始数据

首先运行以下代码生成初始数据框:

set.seed(1)
df <- data.frame(
  WHO = as.factor(sample(1:3, size = 6000, replace = TRUE, prob = c(0.80, 0.15, 0.05)))
)

初始频数统计结果:

> table(df$WHO)

   1    2    3 
4753  923  324 

需求

需要随机选取df$WHO == 1中的5%样本,将其WHO值替换为2,最终期望得到的频数统计为:

> table(df$WHO)

   1     2    3 
4515  1161  324

实现方案

使用以下代码完成完全随机的样本替换:

# 获取所有WHO为1的行索引
who1_rows <- which(df$WHO == 1)
# 计算需要替换的样本数量(取WHO=1样本数的5%)
replace_count <- round(length(who1_rows) * 0.05)
# 随机抽取不重复的目标索引
selected_rows <- sample(who1_rows, size = replace_count, replace = FALSE)
# 替换选中行的WHO值为2(保留因子水平)
df$WHO[selected_rows] <- factor(2, levels = levels(df$WHO))
# 验证结果
table(df$WHO)

代码说明

  • which(df$WHO == 1):精准筛选出所有WHO取值为1的行位置
  • sample(..., replace = FALSE):确保抽取的是无重复的随机样本,满足完全随机的要求
  • factor(2, levels = levels(df$WHO)):替换时保留原因子的所有水平,避免后续统计出现异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:09:09