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

如何基于R数据框列值生成带条件概率的随机二分类结果

实现步骤

前置准备

首先设置随机种子保证结果可复现,同时构造你提供的示例数据集:

# 设置随机种子
set.seed(123)

# 构造示例数据
ID <- c(1:200)
State <-c("A", "B", "C", "D")
State <- sort(rep(State, 50))
df <- data.frame(ID=ID, State=State)

生成二分类结果

我们通过R自带的二项分布随机数生成函数rbinom()实现需求,对应规则为:州A/C生成1的概率为0.7,州B/D生成1的概率为0.5(即完全随机),两种实现方式可选:

方法1:base R原生实现

# 定义各州对应的1的生成概率
prob_map <- c("A" = 0.7, "B" = 0.5, "C" = 0.7, "D" = 0.5)
# 逐行生成二分类结果存入新列
df$class_result <- mapply(function(s) rbinom(1, 1, prob = prob_map[s]), df$State)

方法2:dplyr实现(可读性更高)

library(dplyr)
df <- df %>%
  mutate(
    # 按州匹配生成概率
    prob = case_when(
      State %in% c("A", "C") ~ 0.7,
      State %in% c("B", "D") ~ 0.5
    ),
    # 生成二分类结果
    class_result = rbinom(n(), 1, prob = prob)
  ) %>%
  select(-prob) # 不需要概率辅助列可直接删除

结果验证

你可以运行以下代码验证分类结果占比是否符合预期:

# 按州统计1的占比
prop.table(table(df$State, df$class_result), 1)

正常输出中A、C州的1占比在70%上下波动,B、D州的1占比在50%上下波动,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:15:05