R - Как добавить строки для пропущенных значений для уникальных групповых последовательностей?

Моя проблема похожа на этот предыдущий вопросСамый быстрый способ добавить строки для пропущенных значений в data.frame?

Я не могу понять, как добавить строки, дополненные «NA», когда min / max различаются по группам.

> red<-data.frame(project = c(6, 6, 6, 6, 6, 9, 9, 9), period =c(1, 2, 5:7, 2, 4, 5), v3=letters[1:8], v4=c("red", "yellow", recursive = T))
> red
  project period v3     v4
1       6      1  a    red
2       6      2  b yellow 
3       6      5  c    red
4       6      6  d yellow
5       6      7  e    red
6       9      2  f yellow
7       9      4  g    red
8       9      5  h yellow

Я хочу, чтобы это выглядело так:

project period v3     v4
      6      1  a    red
      6      2  b yellow
      6      3 NA     NA
      6      4 NA     NA
      6      5  c    red
      6      6  d yellow
      6      7  e    red
      9      2  f yellow
      9      3 NA     NA
      9      4  g    red
      9      5  h yellow

Когда я использовал

library(data.table)
DT=as.data.table(red)
setkey(DT, project, period)

DT[CJ(unique(project), seq(min(period), max(period)))]

каждая группа проекта имеет 7 периодов; Проект 6 должен иметь периоды 1-7, но проект 9 должен иметь периоды 2-5.

Я пытался возиться с.SD[ which.max(period)], by=project] но без сигары

Я думал, что это должно быть что-то простое в seq (), но я попыталсяseq(min(period, by=project)) без удачи

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос