Самый быстрый способ добавить строки для пропущенных временных шагов?

У меня есть столбец в моих наборах данных, где периоды времени (Time) являются целыми числами от a-b. Иногда для любой группы могут отсутствовать периоды времени. Я хотел бы заполнить эти строкиNA, Ниже приведен пример данных для 1 (из нескольких 1000) групп.

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

Как видите, время 3 отсутствует. Часто один или несколько могут отсутствовать. Я могу решить это самостоятельно, но боюсь, что не смогу сделать это наиболее эффективным способом. Мой подход заключается в создании функции, которая:

Генерация последовательности периодов времени изmin(Time) вmax(Time)

Тогда сделайsetdiff схватить пропавшего без вестиTime ценности.

Преобразовать этот вектор вdata.frame

Вытащить переменные уникального идентификатора (Id и другие, не перечисленные выше), и добавьте это к этому data.frame.

Слияние двух.

Возврат из функции.

Таким образом, весь процесс будет выполняться следующим образом:

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

Лучший способ добиться этого?

Ответы на вопрос(4)

Ваш ответ на вопрос