R - Wie füge ich Zeilen für fehlende Werte für eindeutige Gruppensequenzen hinzu?

Mein Problem ähnelt dieser vorherigen FrageSchnellste Methode zum Hinzufügen von Zeilen für fehlende Werte in einem data.frame?

Ich kann nicht herausfinden, wie mit "NA" aufgefüllte Zeilen hinzugefügt werden, wenn die minimalen / maximalen Werte nach Gruppe unterschiedlich sind.

> 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

Ich möchte, dass es so aussieht:

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

Wenn ich @ benutzt ha

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

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

ede Projektgruppe hat 7 Perioden; Projekt 6 sollte die Zeiträume 1-7 haben, Projekt 9 sollte die Zeiträume 2-5 haben.

Ich habe versucht, mit @ herumzuspiel.SD[ which.max(period)], by=project] aber keine Zigarre.

Ich dachte, es sollte etwas einfaches in der seq () sein, aber ich habe versucht,seq(min(period, by=project)) ohne glück

Vielen Dank

Antworten auf die Frage(6)

Ihre Antwort auf die Frage