使用R按行进行二项分布

时间:2018-04-04 09:33:49

标签: r simulation distribution

有两列,ID和概率

        ID probability
        1  0.5
        2  0.8
        3  0.3

我想模拟每个ID的疾病状态,健康为0,生病为1。每个ID生病的可能性在第二栏。

我试过了

df$sick <- rbinom(1,1,df$probability)

但我得到全部为零或者一个。我究竟做错了什么?提前感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您的问题是,您只将n设置为1,因此rbinom仅返回一个值,该值将重复用于所有行(通过R的标准重用规则)。见?rbinom。这样的事情可以解决问题:

df <- read.table(header=TRUE,text = "ID probability
    1  0.5
    2  0.8
    3  0.3")

df$sick <- rbinom(n = nrow(df), size = 1, prob = df$probability)
print(df)
#  ID probability sick
#1  1         0.5    1
#2  2         0.8    1
#3  3         0.3    0