如何根据R中的频率对色谱柱进行采样?

如何根据R中的频率对色谱柱进行采样?,r,tidyverse,R,Tidyverse,目前有以下数据表 如你所见,1发生的概率为30%,2发生的概率为50%,3发生的概率为20% 我想根据这个概率对本专栏中的值进行采样 所以我想要这样的东西 如您所见,前两列不受影响 关于如何做到这一点,有什么想法吗?我认为示例函数会有所帮助,但不确定如何使其工作最简单的方法就是洗牌列 df$col3 <- sample(df$col3) df$col3如果您希望以所需的概率重新创建列,而不只是乱洗其当前值: df$col3sample <- sapply(1:nrow(df),

目前有以下数据表

如你所见,1发生的概率为30%,2发生的概率为50%,3发生的概率为20%

我想根据这个概率对本专栏中的值进行采样

所以我想要这样的东西

如您所见,前两列不受影响


关于如何做到这一点,有什么想法吗?我认为示例函数会有所帮助,但不确定如何使其工作

最简单的方法就是洗牌列

df$col3 <- sample(df$col3)

df$col3如果您希望以所需的概率重新创建列,而不只是乱洗其当前值:

df$col3sample <- sapply(1:nrow(df), function(x) sample(3, size=1, prob=c(0.3, 0.5, 0.2), replace=TRUE))

但是,这确实允许概率分布中存在一些随机变化,因此您可能需要采集一些样本,使其精确为30%1s、50%2s和20%3s。

您能详细解释一下
col3
的逻辑吗?我刚刚创建了I作为示例。它只包含这3个值,porbabilities是我创建的。这里没有更多的行-我如何根据值发生的概率重新排列该列中的值-因此我希望2在50%的时间内出现-在示例中是5次,以便于理解<代码>df$col3?^以下给出答案!我需要和他们一样经常发生的概率?例如,示例1中只有30%的时间出现,这会起作用吗?是的,
col3
将包含完全相同的数字,只是顺序不同,因此频率必须相同。如果我在col3中有相同的值,具有相同的概率,但有大约100行,这会起作用吗?我只希望概率与行数增加的概率相同-因此,如果100行,那么2应该在50%的时间内出现?如果您能详细说明一下解决方案,这将非常有用。这可能只是一句话,但你很难理解。我添加了一些额外的解释和输出。
   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