So habe ich zwei Tabellen:Effiziente Möglichkeit, Daten Merge und Füllen NAs mit inkonsistentem Zeitrahmen
Table1:
ID Yr Qty Cum_Qty
A 2013 3 3
A 2015 3 6
A 2016 2 8
B 2006 1 1
Table2:
ID Yr
A 2013
A 2014
A 2015
A 2016
A 2017
B 2016
B 2017
C 2016
C 2017
Dies ist, was ich erreichen will - ich will Cum_Qty Tabelle 2 und erbe letzte Cum_Qty hinzufügen, wenn ein solches vorhanden ist:
ID Yr Cum_Qty
A 2013 3
A 2014 3
A 2015 6
A 2016 8
A 2017 8
B 2016 1
B 2017 1
C 2016 0
C 2017 0
wenn ich zur Zeit ein left_join(table2, table1, by = c("ID", "Yr")
tun, ich mit NA-Werten in Cum_Qty am Ende, wenn bestimmte Jahr in Tabelle fehlt 2. ich dachte über Lag-Funktion, aber das würde lassen Sie mich mit NAS-Gerät für die ersten Jahresrekord und würde nicht für ID C arbeiten, was fehlt in table1. Ich möchte dplyr::mutate
verwenden, damit mein Code in den Rohren bleibt.
Ich denke, ich weiß, wie dies mit 3 ~ 4 Mutate zu tun, aber ich möchte einen Weg finden, um den Code zu vereinfachen. Hat jemand irgendwelche Empfehlungen, was ich tun kann?
Um Tabellen in R zu erstellen:
table_1 <- data.frame(
ID = c("A", "A", "A", "B"),
Yr = c(2013, 2015, 2016, 2006),
Qty = c(3, 3, 2, 1)) %>%
arrange(ID, Yr) %>%
group_by(ID) %>%
mutate(Cum_Qty = cumsum(Qty))
table_2 <- data.frame(
ID = c("A", "A", "A", "A", "A", "B", "B", "C", "C"),
Yr = c(2013, 2014, 2015, 2016, 2017, 2016, 2017, 2016, 2017))
Vielen Dank für Deine Antwort! Zoo :: na.locf war mir nicht bekannt. Meine Tabellen sind VIEL größere Datenmengen und ich möchte den Großteil der Datenbearbeitung mit Spark machen; Ich bin mir nicht sicher, ob wenn ich na.locf verwenden würde dplyr/sparklyr automatisch die Funktion obwohl:/ – creativename
Ich bin nicht vertraut mit Sparklyr, so weiß ich nicht, wie Sie darüber gehen könnten. Es scheint, dass sparklyr nur einen begrenzten Bereich von Funktionen unterstützt (https://stackoverflow.com/questions/39494484/sparkr-vs-sparklyr), obwohl einer der Kommentare eine neue Funktion spark_apply() in der neuesten Version erwähnt, Sie Vielleicht möchten Sie sich das ansehen. – Lamia