Это не реальный статистический вопрос, а вопрос о подготовке данных перед выполнением фактического статистического анализа. У меня есть фрейм данных, который состоит из разреженных данных. Я хотел бы «расширить» эти данные, чтобы включить нули для пропущенных значений, группировать по группам.
Вот пример данных (a
и b
- два фактора, определяющих группу, t
- это разреженная временная метка, а x
- это значение):
test <- data.frame(
a=c(1,1,1,1,1,1,1,1,1,1,1),
b=c(1,1,1,1,1,2,2,2,2,2,2),
t=c(0,2,3,4,7,3,4,6,7,8,9),
x=c(1,2,1,2,2,1,1,2,1,1,3))
Предполагая, что я хотел бы расширить значения между t=0
и t=9
, это результат, на который я надеюсь:
test.expanded <- data.frame(
a=c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
b=c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2),
t=c(0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9),
x=c(1,0,2,1,2,0,0,2,0,0,0,0,0,1,1,0,2,1,1,3))
Нули были вставлены для всех пропущенных значений t
. Это облегчает использование.
У меня есть быстрая и грязная реализация, которая сортирует информационный кадр и проходит по каждой из его строк, добавляя пропущенные строки по одной за раз. Но я не совсем доволен решением. Есть ли лучший способ сделать это?
Для тех, кто знаком с SAS, он похож на proc expand
.
Спасибо!