Alle Lagbeispiele, die ich sehe, verwenden eine kontinuierliche Zeitreihe. Ich versuche eine prozentuale Veränderung pro Jahr zu berechnen, aber es wäre für mich nicht sinnvoll zu berechnen, ob es dazwischen einen Unterschied gibt. , d. H. Ich würde keine prozentuale Veränderung von 2001 bis 2004 wollen. Nur interessiert zwischen zwei Jahren. Beispiel für die Dateneingabe:Berechne die Änderung unter Verwendung der Nachlauffunktion mit Jahresfehlern in R
structure(list(ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L), .Label = c("A", "B"), class = "factor"),
Year = c(2000L, 2001L, 2004L, 2005L, 2006L, 2007L, 1990L,
2000L, 2001L, 2005L, 2006L, 2007L, 2009L), Value = c(4L,
10L, 7L, 4L, 7L, 5L, 2L, 7L, 10L, 6L, 9L, 2L, 9L)), .Names = c("ID",
"Year", "Value"), class = "data.frame", row.names = c(NA, -13L
))
df <- df %>% group_by(ID) %>%
mutate(delta = (Value-lag(Value))/lag(Value))
Die obige Zeile gibt nicht meine gewünschte Ausgabe zurück und ignoriert Orte, die springen. Wunsch Ausgabe:
structure(list(ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L), .Label = c("A", "B"), class = "factor"),
Year = c(2000L, 2001L, 2004L, 2005L, 2006L, 2007L, 1990L,
2000L, 2001L, 2005L, 2006L, 2007L, 2009L), Value = c(4L,
10L, 7L, 4L, 7L, 5L, 2L, 7L, 10L, 6L, 9L, 2L, 9L), Change = c(NA,
1.5, NA, -0.428571429, 0.75, -0.285714286, NA, 2.5, 0.428571429,
NA, 0.5, -0.777777778, NA)), .Names = c("ID", "Year", "Value",
"Change"), class = "data.frame", row.names = c(NA, -13L))
Wie groß ist Ihr Datenmenge zu bekommen? –
Tausende von Zeilen. – hhhaaa1