2010-11-17 1 views
1

У меня есть набор данных, как это:заполнение недостающих «дыр» в наборе данных

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

У меня есть некоторые данные лаборатории, что из того же самого пациента, некоторые лабораторные данные не несут дату разряда, что она должна иметь , И мне нужно, чтобы поместить недостающую дату разряда в них, в настоящее время я использую следующий код:

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

Но это довольно медленно (набор данных имеет 92528 строк с 70527 уникальным patient_id), как я могу ускорить его ? Благодарю.

ответ

1

сливать, должно быть намного быстрее.

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

спасибо! вы спасли мой день, проверяя данные снова, чтобы увидеть, не пропустил ли я что-нибудь там. Еще раз спасибо! – lokheart