¿La forma más rápida de agregar filas para los pasos de tiempo perdidos?
Tengo una columna en mis conjuntos de datos donde los períodos de tiempo (Time
) son enteros que van desde a-b. A veces, pueden faltar períodos de tiempo para cualquier grupo dado. Me gustaría rellenar esas filas conNA
. A continuación se muestran datos de ejemplo para 1 (de varios 1000) grupo (s).
<code>structure(list(Id = c(1, 1, 1, 1), Time = c(1, 2, 4, 5), Value = c(0.568780482159894, -0.7207749516298, 1.24258192959273, 0.682123081696789)), .Names = c("Id", "Time", "Value"), row.names = c(NA, 4L), class = "data.frame") Id Time Value 1 1 1 0.5687805 2 1 2 -0.7207750 3 1 4 1.2425819 4 1 5 0.6821231 </code>
Como puedes ver, falta el tiempo 3. A menudo uno o más pueden faltar. Puedo resolver esto por mi cuenta, pero me temo que no lo haría de la manera más eficiente. Mi enfoque sería crear una función que:
Generar una secuencia de periodos de tiempo desdemin(Time)
amax(Time)
Entonces haz unsetdiff
agarrar desaparecidosTime
valores.
Convertir ese vector en undata.frame
Tire de las variables identificadoras únicas (Id
y otros que no figuran en la lista anterior), y agregue eso a este data.frame.
Fusionar los dos.
Regreso de la función.
Entonces todo el proceso se ejecutaría de la siguiente manera:
<code> # Split the data into individual data.frames by Id. temp_list <- dlply(original_data, .(Id)) # pad each data.frame tlist2 <- llply(temp_list, my_pad_function) # collapse the list back to a data.frame filled_in_data <- ldply(tlist2) </code>
¿Mejor manera de lograr esto?