Alors, voici mon problème :
J'ai deux bases de données de santé :
- La première contient des informations concernant des prélèvement effectués chez des patients (identifiant patient, date du prélèvement, résultats de tests...). Dans cette data.frame, une ligne correspond à un prélèvement, et il peut y avoir plusieurs prélèvements par patient.
- La deuxième contient des informations sur certains patients (exemple : patients décédés et dates de décès).
L'avantage, c'est que les identifiants patient des deux bases de données correspondent.
Code : Tout sélectionner
> inter<-intersect(data2$identifiant, as.character(data1$Id_Patient))
tableau2<-data2[data2$identifiant%in%inter,]
head(tableau2[,c(1,46)], 10)
identifiant date.DC
173 172 09/08/2011
99 98 18/05/2005
151 150 01/05/2010
201 200 04/05/2013
160 159 30/11/2010
144 143 10/12/2009
176 175 06/09/2011
159 158 12/11/2010
140 139 18/09/2009
155 154 22/09/2010
Donc je voudrais, lorsqu'un patient présent dans data1 apparait dans data2 (via son identifiant), exporter l'information "DCD" ainsi que la date de décès.
Code : Tout sélectionner
data1$DCD<-ifelse(data1$Id_Patient%in%tableau2$identifiant, "oui", NA)
Pas de problème
J'ai tenté ça :
Code : Tout sélectionner
data1$date_DC<-ifelse(data1$Id_Patient%in%tableau2$identifiant, as.character(tableau2$date.DC), NA)
C'est là que ça coince, toutes les dates se mélangent !
Extrait (la colonne de droite correspond au nombre de prélèvements par patient) :
Code : Tout sélectionner
> data1[60:70, c(34, 38:40)]
Id_Patient DCD date_DC tot_prel
6.554 6 <NA> <NA> 4
6.1036 6 <NA> <NA> 4
6.1091 6 <NA> <NA> 4
7.7 7 <NA> <NA> 2
7.555 7 <NA> <NA> 2
9.37 9 oui 12/11/2010 12
9.38 9 oui 18/09/2009 12
9.69 9 oui 22/09/2010 12
9.71 9 oui 28/10/2012 12
9.133 9 oui 30/03/2011 12
9.200 9 oui 09/08/2011 12
On voit que pour le patient 9, la date ne reste pas fixe par rapport à la date trouvée dans data2.
J'ai aussi tenté ça :
Code : Tout sélectionner
for (i in 1: nrow(tableau2)){
for (j in 1: nrow(data1)){
while(tableau2$identifiant[i]==data1$Id_Patient[j]){
data1$date_DC[j]<-repeat(as.character(tableau2$date.DC[i]))
}
}
}
Mais la boucle pédale et ne se termine jamais...
Quelqu'un a-t-il une idée ?
Merci de votre aide !