Angenommen, die folgenden Daten:lineare Interpolation durch Gruppe in R
Date V1 V2
1 1996-01-04 0.04383562 days 0.1203920
2 1996-01-04 0.12054795 days 0.1094760
..............
3 1996-02-01 0.04383562 days 0.1081815
4 1996-02-01 0.12054795 days 0.1092450
..............
5 1996-03-01 0.04109589 days 0.1553875
6 1996-03-01 0.13687215 days 0.1469690
Für jede der Gruppendaten (was ich sie für eine einfache durch Punkte zu unterscheiden), ich möchte eine einfache lineare Interpolation tun: für eine V1=0.08
was V2
ich werde bekommen.
Was ich versucht habe: zuerst die logischste Ansatz zu verwenden approx
:
IV<-data %>% group_by(Date) %>% approx(V1,V2,xout=0.08)
sondern bekomme ich diesen Fehler:
Error in approx(., V1, V2, xout = 0.08) :
invalid interpolation method
In addition: Warning message:
In if (is.na(method)) stop("invalid interpolation method") :
the condition has length > 1 and only the first element will be used
dann habe ich versucht:
Results<-unsplit(lapply(split(data,data$Date),function(x){m<-lm(V2~V1,x)
cbind(x,predict(m,0.08))}),data$Date)
mit einem Fehler:
Error in model.frame.default(formula = x[, 3] ~ x[, 2], data = x, drop.unused.levels = TRUE) :
invalid type (list) for variable 'x[, 3]'
Ich habe auch versucht die dplyr
Paket ohne Ergebnisse:
IV<-data %>% group_by(Date) %>% predict(lm(V2~V1,data=data,0.08)
, die den Fehler gab:
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "c('grouped_df', 'tbl_df', 'tbl', 'data.frame')"
Danke.
Sorry für die späte Antwort, aber ca. nicht gut funktioniert (gibt NA), wenn ich extrapolieren, ist das richtig? Es funktioniert perfekt für den Interpolationsteil. –