【发布时间】:2020-02-02 00:58:08
【问题描述】:
使用以下内容:
name<-c(rep("Adam", times = 6), rep("Barry", times = 4), rep("Charlie", times = 5))
group<-c(1:15)
probs<-c(0.4, 0.2, 0.1, 0.15, 0.1, 0.05, 0.25, 0.35, 0.3, 0.1, 0.2, 0.15, 0.30, 0.15, 0.2)
df<-data.frame(name, group, probs)
我正在尝试创建一个输出,该输出采用每个 $name 并根据 $probs 中的概率为其分配一个 $group。例如,Adam 有 40% 的机会在第 1 组,20% 的机会在第 2 组,10% 的机会在第 3 组,等等。
最终结果将根据这些概率为每个名称返回一组,并且看起来像这样
Adam Barry Charlie
5 10 12
我相信我应该使用 tapply() 并运行了以下命令,但这并不能解释各种概率
tapply(df$group, df$name, sample, 1)
为了利用各种概率,我也尝试了以下方法,但由于概率数不正确而返回错误
tapply(df$group, df$name, sample, 1, prob = df$probs)
非常感谢任何有关如何解决这些问题并获得所需输出的见解。
【问题讨论】: