R: Interpolation von NAs nach Gruppe

Ich möchte eine lineare Interpolation in einer Variablen eines Datenrahmens durchführen, die Folgendes berücksichtigt: 1) Zeitunterschied zwischen den beiden Punkten, 2) den Zeitpunkt, zu dem die Daten aufgenommen wurden, und 3) die Person, die zur Messung der Variablen herangezogen wurde .

Zum Beispiel im nächsten Datenrahmen:

 df <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
            Individuals=c(1,1,1,1,1,1,1,2,2,2),
            Value=c(1, 2, 3, NA, 5, NA, 7, 5, NA, 7))
  df

Ich möchte erhalten:

 result <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
                Individuals=c(1,1,1,1,1,1,1,2,2,2),
                Value=c(1, 2, 3, 4, 5, 6, 7, 5, 5.5, 6))
 result

Ich kann nicht ausschließlich die Funktion @ verwendna.approx des Paketszoo Da nicht alle Beobachtungen aufeinanderfolgend sind, gehören einige Beobachtungen einer Person und andere Beobachtungen anderen. Der Grund ist, dass wenn die zweite Person ihre erste Obsrevation mit @ hätNA und ich würde ausschließlich die Funktion @ nutzna.approx, Ich würde Informationen aus dem @ verwendindividual==1 um das @ zu interpolierNA desindividual==2 (z. B. würde der nächste Datenrahmen einen solchen Fehler haben)

  df_2 <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
                Individuals=c(1,1,1,1,1,1,1,2,2,2),
                Value=c(1, 2, 3, NA, 5, NA, 7, NA, 5, 7))
  df_2

Ich habe versucht, die Pakete zu verwendenzoo unddplyr:

library(dplyr)
library(zoo)
proof <- df %>%
  group_by(Individuals) %>%
  na.approx(df$Value)

Aber ich kann nicht durchführengroup_by in einemzoo Objekt

Wissen Sie, wie man @ interpolierNA Werte in einer Variablen nach Gruppen?

Danke im Voraus

Antworten auf die Frage(4)

Ihre Antwort auf die Frage