Bonjour,
Je m'arrache quelques cheveux pour créer une fonction compteur dans R qui me permettrait de concaténer deux tables distinctes. Si vous aviez des lumières pour me sortir de ce problème, merci d'avance.
Je m'explique, je dispose à l'origine de deux tables :
Dans la première, chaque ligne concerne un individu identifié par la variable ident_ind (unique) avec quantités d'informations (260 variables composant autant de colonnes).
La seconde table contient des événements en l'occurrence des maladies que les individus ont pu avoir au cours de leur vie et qui, chacune, sont identifiées par une variable unique (ident_mal) codée en 7 grands types (1 à 7).
Un individu pouvant présenter 0, 1 ou plusieurs maladies et ces maladies peuvent se répéter ou n’apparaître qu'une fois. En conséquence, la variable ident_ind (la même que dans la première table) peut apparaître une ou plusieurs fois ou ne pas apparaître du tout dans cette seconde table.
Avec la formule suivante, j'ai obtenu le nombre de fois qu'un même type de maladie était survenu dans la vie d'un individu :
compteur$count <- unlist(lapply(table(compteur$ident_ind), function(x){1:x}))
Ce qui donne une table que j'ai appelée "compteur" qui a cette tête :
dent_ind Mal count
10002 3 1
10005 3 1
100012 7 2
100012 3 1
mais un individu peut présenter plusieurs types de maladie dans sa vie, comme l'individu 100012 dans le tableau ci-dessus qui a présenté deux fois la maladie type 7 et 1 fois la maladie type 3.
Je souhaiterais à présent obtenir, pour chaque individu, le nombre et le type de maladie qu'il a rencontré. On aurait un tableau (fictif) de ce type :
ident-ind type1 type2 type3 type4 type5 type6 type7
100012 0 0 1 0 0 0 2
100013 0 2 1 0 0 0 0
100014 2 0 0 0 0 0 0
100015 0 0 0 0 0 0 0
J'aurais, je crois, besoin d'un compteur de ce type qui dirait :
1) à la première ligne la table "compteur", Type1 = 0, type2=0, type3=0 ...type7=0
2) if "mal" = 1 then type1=type1+1
if "mal" =2 then typet 2=type2+1
.
.
if "mal"=7 then type7=type7+1
3) arrêter la boucle à la dernière maladie recensée dans la seconde table
J'espère avoir été assez claire. Merci d'avance de l'aide que vous pourrez m'apporter...
Partager