Самый быстрый способ добавить строки для пропущенных временных шагов?
У меня есть столбец в моих наборах данных, где периоды времени (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>
Лучший способ добиться этого?