为每个可能的值模拟具有固定概率的数据集

时间:2014-11-21 17:16:47

标签: r

我正在尝试使用R来模拟事务数据库中的事务量,特别是在$500<=x<$1000范围内。随着时间的推移,此范围内的值具有以下频率(我仅显示前17位)。有没有简单的方法来模拟一个随机数据集给定一个频率列表,如下所示?非常感谢!

Amount  Frequency
500 52%
600 8%
750 3%
700 3%
800 2%
900 2%
550 2%
850 1%
650 1%
525 1%
510 1%
675 1%
625 1%
757 1%
680 1%
950 1%

1 个答案:

答案 0 :(得分:2)

使用sample

# I modified your example for the sum of frequencies to be 1
df <- data.frame(
  amount = c(500,600,750,700,800,900,550,850,650,525,510,675,625,757,680,950),
  frequency = c(52,18,6,6,5,2,2,1,1,1,1,1,1,1,1,1) / 100
)
sample(df$amount, size=5, replace=T, prob=df$frequency)
## [1] 500 525 500 500 800