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

技术求助:基于条件随机分配生成数据集的Insider Presence列

条件随机分配解决方案:为Unknown行实现50%概率标记1/0

完整代码实现(使用dplyr)

library(dplyr)
library(stringr)

# 构造示例数据集
df <- tibble(
  COMPANY = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"),
  BOARDROLE = c("Acting Director", "CEO", "Independent Director", "Chairman", "Chairman", "Member", "Independent Director", "Member", "Member", "Member"),
  INSIDER = c("Yes", "Yes", "No", "Unknown", "Unknown", "Unknown", "Outsider", "Unknown", "Unknown", "Unknown")
)

# 生成InsiderPresence列
set.seed(123) # 设置随机种子保证结果可复现
df <- df %>%
  mutate(InsiderPresence = case_when(
    str_detect(INSIDER, "No|Outsider") ~ 0,
    INSIDER == "Yes" ~ 1,
    INSIDER == "Unknown" ~ sample(c(0, 1), n(), replace = TRUE, prob = c(0.5, 0.5)),
    TRUE ~ NA_real_
  ))

# 输出结果
print(df, width = Inf)

代码逻辑说明

  1. 固定规则处理:
    • 当INSIDER为No或Outsider时,InsiderPresence设为0;
    • 当INSIDER为Yes时,InsiderPresence设为1;
  2. 随机分配处理:
    • 针对INSIDER为Unknown的行,使用sample()函数以50%的概率随机生成0或1;
    • 添加set.seed(123)可以固定随机结果,方便后续调试和结果复现;
  3. 兜底逻辑:
    • 最后一个分支TRUE ~ NA_real_用于处理未覆盖的异常取值,返回NA便于排查数据问题。

替代实现方式(分两步处理)

如果更习惯分步操作,可以先按原逻辑初始化列,再替换Unknown行的取值:

set.seed(123)
df <- df %>%
  mutate(
    # 先处理已知条件
    InsiderPresence = ifelse(str_detect(INSIDER, "No|Outsider"), 0, 1),
    # 替换Unknown行的随机值
    InsiderPresence = ifelse(INSIDER == "Unknown", sample(c(0,1), n(), replace = TRUE, prob = c(0.5,0.5)), InsiderPresence)
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:18:29