首页 > 解决方案 > 使用以列值为条件的概率创建随机二元结果

问题描述

我想创建一个随机二进制结果,以便结果的概率根据数据框中的列值而有所不同。例如,使用下面的数据,我希望状态“A”和“C”的人有 70% 的结果发生或 1,而“B”和“D”的人有随机发生的概率。示例数据代码:

ID <- c(1:200)
State <-c("A", "B", "C", "D")
State <- sort(rep(State, 50))
df <- data.frame(ID=ID,
                 State=State)

标签: r

解决方案


rbinom函数在概率上进行了矢量化,因此您可以对两组使用不同的概率。我假设“随机”概率是指 50%。那看起来像

df$draw <- with(df, rbinom(length(ID), 1, ifelse(State %in% c("A","C"), .7, .5)))

你可以检查事情是否有效

with(df, tapply(draws, State, mean))

只有 200 次抽签,您会看到很多变化,但如果您运行几次,您应该会看到 A 和 C 平均约为 70%。


推荐阅读