Ich habe einen Datenrahmen, ähnlich wie diese:tapply basierend auf mehreren Indizes in R
ref=rep(c("A","B"),each=240)
year=rep(rep(2014:2015,each=120),2)
month=rep(rep(1:12,each=10),4)
values=c(rep(NA,200),rnorm(100,2,1),rep(NA,50),rnorm(40,4,2),rep(NA,90))
DF=data.frame(ref,year,month,values)
Ich mag die maximale Anzahl aufeinander folgenden NAs pro Bezug zu berechnen, pro Jahr. Ich habe eine Funktion erstellt, die die maximale Anzahl aufeinanderfolgender NAs ermittelt, aber nur auf einer Variablen basieren kann.
Zum Beispiel
func <- function(x) {
max(rle(is.na(x))$lengths)
}
with(DF, tapply(values,ref, func))
# A B
# 200 90
with(DF, tapply(values,year, func))
# 2014 2015
# 120 90
So gibt es ein Maximum von 200 aufeinanderfolgenden NAs in Ref A insgesamt maximal 90 und in Ref B, die korrekt ist. Darüber hinaus gibt es 120 NAs im Jahr 2014 und 90 im Jahr 2015.
Was würde Ich mag ein Ergebnis pro ref ist und Jahr, wie zum Beispiel:
A 2015 80
A 2014 120
B 2015 90
B 2014 50
Das ist genau das, was ich will. Vielen Dank! – sym246