Используя следующее:
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 и назначает ему $ group на основе вероятностей из $ probs. Например, Адам имеет 40% -ную вероятность оказаться в группе 1, 20% -ную вероятность оказаться в группе 2, 10% -ную вероятность оказаться в группе 3 и т. Д. c.
Окончательный результат вернет один группа для каждого имени на основе этих вероятностей и будет выглядеть примерно так
Adam Barry Charlie
5 10 12
Я считаю, что я должен использовать tapply () и выполнить следующее, но это не учитывает различные вероятности
tapply(df$group, df$name, sample, 1)
Чтобы использовать различные вероятности, я также попробовал следующее, но он возвращает ошибку из-за неверного числа вероятностей
tapply(df$group, df$name, sample, 1, prob = df$probs)
Любое понимание того, как исправить эти выпуск и получить желаемый результат очень ценится.