Problem: Wie kann ich alle Zeilen in einer Gruppe vor dem Auftreten eines bestimmten Wertes rückwärts füllen. Ich versuche nicht, NA oder fehlenden Wert unter Verwendung zoo
na.locf
zu füllen. Im Folgenden möchte ich alle vorherigen Zeilen in A mit 1,00 füllen, bevor die 1,00 für jede ID-Gruppe auftritt, idealerweise mit dplyr
.Wert rückwärts von Vorkommen nach Gruppe füllen
Eingang:
data<- data.frame(ID=c(1,1,1,1,2,2,2,3,3,3,4,4,4,4,4),
time=c(1,2,3,4,1,2,3,1,2,3,1,2,3,4,5),
A=c(0.10,0.25,1,0,0.25,1,0.25,0,1,0.10,1,0.10,0.10,0.10,0.05))
ID time A
1 1 0.10
1 2 0.25
1 3 1.00
1 4 0.00
2 1 0.25
2 2 1.00
2 3 0.25
3 1 0.00
3 2 1.00
3 3 0.10
4 1 1.00
4 2 0.10
4 3 0.10
4 4 0.10
4 5 0.05
gewünschte Ausgabe:
ID time A
1 1 1.00
1 2 1.00
1 3 1.00
1 4 0.00
2 1 1.00
2 2 1.00
2 3 0.25
3 1 1.00
3 2 1.00
3 3 0.10
4 1 1.00
4 2 0.10
4 3 0.10
4 4 0.10
4 5 0.05
@docendodiscimus Thanks man verwenden kann, sind Sie hier richtig. Ich hätte vorsichtiger sein sollen ... Ich denke, es wäre 'setDT (Daten) [Daten [, .I [Cumsum (A == 1) <1], ID] $ V1, A: = 1]' – akrun