¿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?

Respuestas a la pregunta(4)

Su respuesta a la pregunta