2010-11-17 28 views
1

J'ai un ensemble de données comme ceci:remplissage manquant « trous » dans un jeu de données

Patient_ID Lab_No Discharge_Date 
P0001  L001 2010-01-01 
P0001  L002 
P0001  L003 
P0001  L004 

J'ai des données de laboratoire que du même patient, certaines données de laboratoire ne porte pas la date de sortie qu'il devrait avoir . Et je dois mettre la date de sortie manquantes en eux, je suis actuellement en utilisant le code suivant:

temp <- ddply(temp, 
      c("Patient_ID"), 
      function(df) 
       { 
       df[,"Discharge_Date"] <- unique(df[!is.na(df[,"Discharge_Date"]),"Discharge_Date"]) 
       data.frame(df) 
       }, 
      .progress="text" 
      ) 

Mais c'est assez lent (le jeu de données a 92528 lignes avec 70527 patient_id uniques), comment puis-je accélérer ? Merci.

Répondre

1

fusion, devrait être beaucoup plus rapide.

temp2 <- na.omit(temp) ## create unique discharge date x patient ID list 
temp3 <- merge(temp[1:2], temp2[c(1,3)], by="Patient_ID") ## merge 
+0

merci! vous avez sauvé ma journée, je vérifie à nouveau les données pour voir si j'ai raté quelque chose. Merci encore! – lokheart