Tirage sans remise et affectation

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Fabrice Yaméogo
Messages : 24
Enregistré le : 22 Mar 2019, 10:09

Tirage sans remise et affectation

Messagepar Fabrice Yaméogo » 01 Avr 2021, 18:30

Bonsoir,

Je dispose de dix observations numérotées de 1 à 10.

Je dispose également d'un dataframe df1 de 10 lignes et de 07 colonnes:

Code : Tout sélectionner

df1<- structure(list(V1 = c(0.496022876614409, 0, 0, 0.293397804696853,
                        2.77791485207083e-14, 0.293397804696853, 0.346729024941169, 0.0369526364535979,
                        0, 0),
      V2 = c(0.00975065943364844, 0.830750312869943, 0.617875374871652, 0.0078345813378116, 0.65696735904031, 0.0078345813378116, 0.0110169960795965,  0.00591247097972129, 0.0645899722977403, 0.92180630951106),
      V3 = c(0.304900342803127, 0.102986957094514, 0.325881142746385, 0.184558955526936, 0.0595681518501199,
        0.184558955526936, 0.496291920663273, 0.826844169947426, 0.0397211554267018, 0.0368634124982575),
      V4 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
      V5 = c(0.0780912934727219, 0.0218248502319753, 0.0237924251223754, 0.132965124020154, 0.0511162665473664,  0.132965124020154,
             0.0744228952812366, 0.0262178401711357, 0.85195278838371,  0.023416058169408),
      V6 = c(0.111234827676212, 0.044437879803664,   0.0324510572596891, 0.381243534418359, 0.232348222562295, 0.381243534418359,
              0.0715391630348402, 0.104072882448235, 0.0437360838919472, 0.01791421982137),
      ID = 1:10), class = "data.frame", row.names = c(NA, 10L))



la 7ème colonne représente l'identifiant de chaque observation.

Les colonnes 1 à 6 représentent des box . Chaque ligne représente des probabilités d'affectation de chaque observation à un box.

Chaque observation doit être affectée à un et un seul box à travers un tirage aléatoire et selon les probabilités présentes.

Je souhaiterais de l'aide pour implémenter la procédure et également associer chaque observation au box auquel il a été affecté.

Si par exemple lors du tirage, les observations:
-1,3,6 sont affectées au box 3;
-2 est affectée au box 2;
-4, 10 sont affectées au box 6;
-5, 7 sont affectées au box 5;
-8, 9 sont affectée au box 1.

Je voudrais obtenir un tel tableau final

Code : Tout sélectionner

df2<-structure(list(ID = 1:10,
      box = c("v3", "V2", "V3", "v6", "V5",
      "V3", "v5", "v1", "V1", "V6")),
      class = "data.frame", row.names = c(NA,10L))                                                                                                         


Cordialement

Fabrice Yaméogo

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Tirage sans remise et affectation

Messagepar Pierre-Yves Berrard » 01 Avr 2021, 18:46

Bonsoir,

Une proposition :

Code : Tout sélectionner

df1$box <-
  apply(
    df1[paste0("V", 1:6)],
    MARGIN = 1,
    function(x) sample(paste0("V", 1:6), size 1, prob = x)
  )
PY

Fabrice Yaméogo
Messages : 24
Enregistré le : 22 Mar 2019, 10:09

Re: Tirage sans remise et affectation

Messagepar Fabrice Yaméogo » 01 Avr 2021, 19:10

Merci pour la réponse rapide.

La procédure fonctionne bien

Cordialement

Fabrice


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité