Bonjour
J'ai eu le même soucis il y a peu. J'ai 5 bases de données avec une base de donnée principale et d'autrre qui pouvez être lié une ou plusieurs fois à des références.
Je m'en suis sortie en faisant une boucle
Code : Tout sélectionner
for (i in 1:nrow(EItab)){
if (i==1){
stat[EItab$REF_NUMBER[i],82]<- as.character(EItab$FORM[i])
stat[EItab$REF_NUMBER[i],83]<- as.character(EItab$eiterm[i])
stat[EItab$REF_NUMBER[i],84]<-as.numeric(EItab$EIGRADE[i])
stat[EItab$REF_NUMBER[i],85]<-Date_Start_EI[i]
stat[EItab$REF_NUMBER[i],86]<-as.character(EItab$EIEVOL[i])
stat[EItab$REF_NUMBER[i],87]<-as.character(EItab$EIGRAV[i])
stat[EItab$REF_NUMBER[i],88]<-Date_Fin_EI[i]
stat[EItab$REF_NUMBER[i],89]<-as.character(EItab$EIHOSPYN[i])
stat[EItab$REF_NUMBER[i],90]<-Date_Debut_Hosp[i]
stat[EItab$REF_NUMBER[i],91]<-Date_fin_Hosp[i]
stat[EItab$REF_NUMBER[i],92]<-as.character(EItab$EITRTYN[i])
stat[EItab$REF_NUMBER[i],93]<-as.character(EItab$EITRTPYN[i])
}
else{
if(EItab$REF_NUMBER[i]!=EItab$REF_NUMBER[i-1])
{
compteur_Rep=0
stat[EItab$REF_NUMBER[i],82]<- as.character(EItab$FORM[i])
stat[EItab$REF_NUMBER[i],83]<- as.character(EItab$eiterm[i])
stat[EItab$REF_NUMBER[i],84]<-as.numeric(EItab$EIGRADE[i])
stat[EItab$REF_NUMBER[i],85]<-Date_Start_EI[i]
stat[EItab$REF_NUMBER[i],86]<-as.character(EItab$EIEVOL[i])
stat[EItab$REF_NUMBER[i],87]<-as.character(EItab$EIGRAV[i])
stat[EItab$REF_NUMBER[i],88]<-Date_Fin_EI[i]
stat[EItab$REF_NUMBER[i],89]<-as.character(EItab$EIHOSPYN[i])
stat[EItab$REF_NUMBER[i],90]<-Date_Debut_Hosp[i]
stat[EItab$REF_NUMBER[i],91]<-Date_fin_Hosp[i]
stat[EItab$REF_NUMBER[i],92]<-as.character(EItab$EITRTYN[i])
stat[EItab$REF_NUMBER[i],93]<-as.character(EItab$EITRTPYN[i])
} else {
compteur_Rep=compteur_Rep+12
stat[EItab$REF_NUMBER[i],82+compteur_Rep]<- as.character(EItab$FORM[i])
stat[EItab$REF_NUMBER[i],83+compteur_Rep]<- as.character(EItab$eiterm[i])
stat[EItab$REF_NUMBER[i],84+compteur_Rep]<-as.numeric(EItab$EIGRADE[i])
stat[EItab$REF_NUMBER[i],85+compteur_Rep]<-Date_Start_EI[i]
stat[EItab$REF_NUMBER[i],86+compteur_Rep]<-as.character(EItab$EIEVOL[i])
stat[EItab$REF_NUMBER[i],87+compteur_Rep]<-as.character(EItab$EIGRAV[i])
stat[EItab$REF_NUMBER[i],88+compteur_Rep]<-Date_Fin_EI[i]
stat[EItab$REF_NUMBER[i],89+compteur_Rep]<-as.character(EItab$EIHOSPYN[i])
stat[EItab$REF_NUMBER[i],90+compteur_Rep]<-Date_Debut_Hosp[i]
stat[EItab$REF_NUMBER[i],91+compteur_Rep]<-Date_fin_Hosp[i]
stat[EItab$REF_NUMBER[i],92+compteur_Rep]<-as.character(EItab$EITRTYN[i])
stat[EItab$REF_NUMBER[i],93+compteur_Rep]<-as.character(EItab$EITRTPYN[i])
}}}
En gros je scanne chacune des lignes en fonction de la reference du patient.
Ma boucle test la référence patient.
Si elle est differente alors on vient mettre les valeurs dans les 12 colonnes qui suivent.
Pour la ligne d'aprés si elle à la meme référence que la ligne d'avant elle vient mettre les donnes dans les colonnes en decalant.
POur vous il faudrai cree de nouvelle ligne dans le data.frame avec la fonction
puis faire une boucle comme la mienne.
Puis avec la fonction
mettre les nouveau noms de colonne
Voila c'est la technique que j'ai utilisé car c'était pour moi le plus simple mais il y a peut-être une technique plus simple.
COrdialement