当前具有以下数据表
如您所见,发生1的概率为30%,发生2的概率为50%,发生3的概率为
我想根据该概率对该列中的值进行采样
所以我想要这样的东西
如您所见-前两列不受影响
有关如何执行此操作的任何想法-我认为示例函数会有所帮助,但不确定如何使它工作
答案 0 :(得分:0)
最简单的方法就是重新整理列...
df$col3 <- sample(df$col3)
答案 1 :(得分:0)
如果您要重新创建具有所需概率的列,而不仅仅是改组其当前值:
df$col3sample <- sapply(1:nrow(df), function(x) sample(3, size=1, prob=c(0.3, 0.5, 0.2), replace=TRUE))
这将在df
中创建新列,并以0.3 / 0.5 / 0.2的概率为每行分配1、2或3。
col1 col2 col3 col3sample
1 ab red 2 3
2 as blue 1 1
3 ad green 2 2
4 af orange 1 2
5 ag black 2 2
6 ah red 1 1
7 aw green 2 2
8 we orange 3 3
9 wr black 2 1
10 et white 3 2
这的确允许概率分布中出现一些随机变化,因此,您可能必须进行一些采样才能使其恰好是30%1s,50%2s和20%3s。