allgemein lag in den Zeitreihen, panel Daten

Ich habe einen Datensatz, der ähnlich wie dieser

User    Date        Value
A       2012-01-01  4
A       2012-01-02  5   
A       2012-01-03  6
A       2012-01-04  7
B       2012-01-01  2
B       2012-01-02  3   
B       2012-01-03  4
B       2012-01-04  5

Ich möchte erstellen Sie eine Verzögerung von Value unter Wahrung User.

User    Date        Value   Value.lag
A       2012-01-01  4       NA
A       2012-01-02  5       4
A       2012-01-03  6       5
A       2012-01-04  7       6
B       2012-01-01  2       NA
B       2012-01-02  3       2   
B       2012-01-03  4       3
B       2012-01-04  5       4

Habe ich es geschafft sehr ineffizient in einer Schleife

df$value.lag1<-NA
levs<-levels(as.factor(df$User))
levs
  for (i in 1:length(levs)) {
    temper<- subset(df,User==as.numeric(levs[i]))
    temper<- rbind(NA,temper[-nrow(temper),])  
df$value.lag1[df$User==as.numeric(as.character(levs[i]))]<- temper
      }

Dieser ist aber sehr langsam. Ich habe mit by und tapply, aber nicht herausgefunden, wie man Ihnen zu arbeiten.

Ich glaube nicht, dass XTS oder TS arbeiten wird, weil der Benutzer das element.

Irgendwelche Vorschläge?

  • Ich denke, die plm Paket ist eine Implementierung für diese Art von Daten.
InformationsquelleAutor Daniel Egan | 2012-01-18
Schreibe einen Kommentar