compilando mancanti “buchi” in un set di dati
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.
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