Najszybszy sposób dodawania wierszy dla brakujących kroków czasowych?

Mam kolumny w moich zestawach danych, w których okresy (Time) są liczbami całkowitymi od a-b. Czasami może brakować okresów dla dowolnej grupy. Chciałbym wypełnić te wierszeNA. Poniżej podano przykładowe dane dla 1 (z kilku 1000) grup.

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

Jak widać, brakuje czasu 3. Często brakuje jednego lub więcej. Mogę to rozwiązać sam, ale obawiam się, że nie zrobiłbym tego w najbardziej efektywny sposób. Moim podejściem byłoby stworzenie funkcji, która:

Wygeneruj sekwencję okresów odmin(Time) domax(Time)

Następnie wykonajsetdiff zgubićTime wartości.

Konwertuj ten wektor na adata.frame

Wyciągnij unikalne zmienne identyfikatora (Id i inne nie wymienione powyżej) i dodaj to do tej ramki danych.

Połącz oba.

Powrót z funkcji.

Cały proces zostałby wtedy wykonany jak poniżej:

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

Lepszy sposób osiągnięcia tego celu?

questionAnswers(4)

yourAnswerToTheQuestion