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

R语言中如何表示任意值以按概率规则生成dataframe新变量

R代码问题解答

核心修改点

你需要根据自己的实际需求选择对应的填写内容,同时注意修正原代码中rbinom的参数错误:

  • 如果你需要执行最初声明的单变量对应规则(即AY仅匹配原变量A、BY仅匹配原变量B,以此类推):
    ???处填入 data[[substr(i, 1, 1)]] == 1
    这段代码会提取当前循环的Y变量名首字符,匹配原始data里的对应变量,判断取值是否为1。
  • 如果你需要执行最后提到的任意原变量为1的全局规则(即只要A-J中有任意一个变量为1,所有Y变量都用0.8概率生成1):
    ???处填入 apply(data[, LETTERS[1:10]], 1, function(row) any(row == 1))
    这段代码会逐行判断A-J列是否存在至少一个取值为1的变量,返回对应行的布尔判断结果。

必要参数修正

你原代码中rbinom的第一个参数填写错误:length(out)返回值为10(仅对应10个Y变量),而你的数据集有500行,需要修改为nrow(data)才能为每一行生成对应的随机值。

修正后的完整代码示例(单变量对应规则版本)

out <- paste0(LETTERS[1:10], "Y")
data2 <- data.frame(data)
colnames(data2) <- out
for (i in out) {
  data2[i] <- ifelse(data[[substr(i, 1, 1)]] == 1, rbinom(nrow(data), 1, 0.8), rbinom(nrow(data), 1, 0.2))
}
# 生成后可合并原始数据和新变量
data_final <- cbind(data, data2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:54:04