Ich habe einen Datensatz mit IDs und Zuständen. Ich muss den maximalen Status in den letzten 4 Quartalen erhalten. Als Beispiel habe ich diese Tabelle:Wie erhalten Sie den höchsten Wert von ID in den letzten 4 Quartalen in r data.table?
library(data.table)
library(zoo)
DT =
data.table(id=c("1","1","1","1","1","1","1","1","2"),
date=as.yearqtr(c("2015Q1", "2014Q4", "2014Q3", "2014Q2", "2014Q1", "2013Q4","2013Q3","2013Q2","2015Q2")),
status=c(0,0,0,0,0,0,1,0,0))
Ich möchte den maximalen Wert für status
in den letzten vier Viertel erhalten zur Verfügung:
DT =
data.table(id=c("1","1","1","1","1","1","1","1","2"),
date=as.yearqtr(c("2015Q1", "2014Q4", "2014Q3", "2014Q2", "2014Q1","2013Q4","2013Q3","2013Q2","2015Q2")),
status=c(0,0,0,0,0,0,1,0,0),
Max_status=c(0,0,0,1,1,1,1,0,0))
Hat jemand eine Ahnung, dass ordentlich zu tun und schnell in data.table? Ich habe versucht, etwas wie folgt:
DT[,Date_1yPrior:=date-1]
DT[,Max_Status:=max(status[date>=Date_1yPrior & date<=Date_1yPrior]),by='id']
aber die j und ich verweisen sind nicht korrekt. Ich würde eine data.table
Lösung bevorzugen.
Vielen Dank im Voraus!
was ist das func as.yearqtr()? Welches Paket? –
@ joel.wilson hat gerade die Frage mit dem Paket geladen. '' zoo'' ist für as.yearqtr() – Milosz