Schnellste Möglichkeit, Zeilen für fehlende Zeitschritte hinzuzufügen?

Ich habe eine Spalte in meinen Datensätzen, in der Zeiträume (Time) sind ganze Zahlen von a-b. Manchmal können Zeiträume für eine bestimmte Gruppe fehlen. Ich möchte diese Zeilen mit ausfüllenNA. Unten finden Sie Beispieldaten für 1 (von mehreren 1000) Gruppe (n).

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

Wie Sie sehen, fehlt die Zeit 3. Oft können ein oder mehrere fehlen. Ich kann das alleine lösen, aber ich fürchte, ich würde das nicht auf die effizienteste Weise tun. Mein Ansatz wäre es, eine Funktion zu erstellen, die:

Generieren Sie eine Folge von Zeiträumen ausmin(Time) zumax(Time)

Dann mach einsetdiff zum greifen vermisstTime Werte.

Wandle diesen Vektor in a umdata.frame

Eindeutige Kennungsvariablen ziehen (Id und andere, die oben nicht aufgeführt sind), und fügen Sie dies zu diesem data.frame hinzu.

Verbinden Sie die beiden.

Rückkehr von der Funktion.

Der gesamte Prozess würde dann wie folgt ausgeführt:

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

Besserer Weg, um dies zu erreichen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage