按照特定分布分配值时,每次如何获得相同的结果

时间:2019-07-17 07:10:26

标签: r random-seed

我的数据包括邮政编码和医院。许多记录缺少医院,我想在邮政编码中分配所有记录后将医院分配给该记录。假设在邮政编码2211中,医院A和B的分布为0.3对0.7。在该邮政编码中,缺少医院的记录需要遵循相同的分布,并且每次我运行该代码时都需要获得相同的结果。

我已经尝试过:

sample(c("A","B"), nrow(df), replace=TRUE, prob=c(0.3,0.7)) 

这给出了预期的结果,但是当我再次运行代码时,记录级别的结果是不同的。我读到有关set.seed()的信息,但这并不能提供相同的输出。

我的一些数据:

  postal code hospital daydate
1         2211       NA       0
2         2211       NA       6
3         2211       NA       8
4         2211       NA      15
5         2211       NA      18
6         2211       NA      18
7         2211       NA      25
8         2211       NA      30
9         2211       NA      51
10        2211       NA      55
11        2211       NA      58
12        2211       NA      59
13        2211       NA      61
14        2211       NA      61
15        2211       NA      64
16        2211       NA      66
17        2211       NA      68
18        2211       NA      69

此示例中有18条记录,因此需要13条记录才能获得A医院,而5条记录则需要获得B医院。例如,记录10总是需要A,而不是第二次B。

我希望我的问题很清楚(我第一次在这里问问题),希望有人可以帮助我!预先谢谢你!

1 个答案:

答案 0 :(得分:1)

set.seed应该是解决方案:

set.seed(0)
s1 <- sample(c("A","B"), 18, replace=TRUE, prob=c(0.3,0.7))
set.seed(0)
s2 <- sample(c("A","B"), 18, replace=TRUE, prob=c(0.3,0.7))
identical(s1, s2)
#[1] TRUE