Ich habe eine Lösung für dieses gesehen, kann aber nicht für Gruppen (Fill NA in a time series only to a limited number) arbeiten, und dachte, es muss ein besserer sein Möglichkeit, dies auch zu tun?na.locf fill NAs bis maxgap auch wenn gap> maxgap, mit Gruppen
Sagen wir, ich habe folgendes dt:
dt <- data.table(ID = c(rep("A", 10), rep("B", 10)), Price = c(seq(1, 10, 1), seq(11, 20, 1)))
dt[c(1:2, 5:10), 2] <- NA
dt[c(11:13, 15:19) ,2] <- NA
dt
ID Price
1: A NA
2: A NA
3: A 3
4: A 4
5: A NA
6: A NA
7: A NA
8: A NA
9: A NA
10: A NA
11: B NA
12: B NA
13: B NA
14: B 14
15: B NA
16: B NA
17: B NA
18: B NA
19: B NA
20: B 20
Was ich tun möchte, ist NA
s beide nach vorne und aus der letzten nicht NA
Wert zurück zu füllen, sondern nur auf eine nach oben maximal zwei Reihen vor oder zurück.
Ich brauche es auch von der Gruppe (ID) getan werden.
Ich habe versucht, na.locf
/na.approx
mit maxgap = x
usw. verwenden, aber es füllt nicht NA
s, wo die Lücke zwischen nicht NA
Werten größer als maxgap
ist. Hingegen möchte ich diese vorwärts und rückwärts füllen, auch wenn der Abstand zwischen den Werten größer als maxgap
ist, aber nur zwei Zeilen.
Das Endergebnis sollte in etwa so aussieht:
ID Price Price_Fill
1: A NA 3
2: A NA 3
3: A 3 3
4: A 4 4
5: A NA 4
6: A NA 4
7: A NA NA
8: A NA NA
9: A NA NA
10: A NA NA
11: B NA NA
12: B NA 14
13: B NA 14
14: B 14 14
15: B NA 14
16: B NA 14
17: B NA NA
18: B NA 20
19: B NA 20
20: B 20 20
In Wirklichkeit mein Datensatz ist massiv, und ich möchte in der Lage sein zu füllen NA
s vorwärts und zurück für bis zu 672 Zeilen, aber nicht mehr , nach Gruppe.
Danke!
wieder gespeichert mich @akrun. Vielen Dank! – LyssBucks