Domanda

Ho un insieme di dati in questo modo:

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

Ho alcuni dati di laboratorio che dallo stesso paziente, alcuni dati di laboratorio non porta la data di scarico che dovrebbe avere. E ho bisogno di inserire la data di scarico mancante in loro, attualmente sto usando il seguente codice:

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"
             )

Ma questo è piuttosto lento (l'insieme di dati ha 92528 righe con 70527 patient_id unico), come posso accelerarlo? Grazie.

È stato utile?

Soluzione

merge, dovrebbe essere molto più veloce.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top