r - 使用以列值为条件的概率创建随机二元结果
问题描述
我想创建一个随机二进制结果,以便结果的概率根据数据框中的列值而有所不同。例如,使用下面的数据,我希望状态“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)
解决方案
该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%。