Maneira mais rápida de adicionar linhas para etapas de tempo ausentes?

Eu tenho uma coluna em meus conjuntos de dados em que os períodos de tempo (Time) são números inteiros variando de a-b. Às vezes pode haver falta de períodos de tempo para um determinado grupo. Eu gostaria de preencher essas linhas comNA. Abaixo estão dados de exemplo para 1 (de vários 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 você pode ver, o tempo 3 está faltando. Muitas vezes, um ou mais podem estar faltando. Eu posso resolver isso sozinha, mas tenho medo de não estar fazendo isso da maneira mais eficiente. Minha abordagem seria criar uma função que:

Gere uma sequência de períodos de tempo a partir demin(Time) paramax(Time)

Então faça umsetdiff para pegar faltandoTime valores.

Converta esse vetor para umdata.frame

Puxe variáveis ​​identificadoras exclusivas (Id e outros não listados acima) e adicione isso a esse data.frame.

Mesclar os dois.

Retornar da função.

Então todo o processo seria executado como abaixo:

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

Melhor maneira de conseguir isso?

questionAnswers(4)

yourAnswerToTheQuestion