Utilisation des éléments suivants:
tapply(df$group, df$name, sample, 1, prob = df$probs)
3 Réponses :
pas un Renommer votre vérifier si les résultats observés correspondent aux probabilités attendues en répliquant la Échantillon: p> TAPPLY () code> solution, mais voici un avec
sample_n () code> à partir de
dplyr code>.
Probs code> colonne comme
attendu_probs code>: p>
TAPPLY ne peut prendre que dans un vecteur, vous devez donc faire quelque chose comme: Cependant, la sortie n'est pas si grande, p> df$name: Adam
[1] 2
------------------------------------------------------------
df$name: Barry
[1] 8
------------------------------------------------------------
df$name: Charlie
[1] 12
Voici une solution de base r n'utilise pas TAPPLY code>, mais utilise
divisée code> et
sapply code>. Nous allons dessiner l'échantillon deux fois. L'utilisation de Set.Seed (42) garantit que vous obtenez les mêmes résultats ici. Vous n'avez pas besoin de l'utiliser lorsque vous exécutez vos propres données:
set.seed(42)
grps <- split(df, df$name)
sapply(grps, function(x) sample(x$group, 1, prob=x$expected_probs))
# Adam Barry Charlie
# 5 10 13
# sapply(grps, function(x) sample(x$group, 1, prob=x$expected_probs))
# Adam Barry Charlie
# 3 9 11