ich einen Datensatz mit dieser Struktur haben:Letzte Beobachtung vorwärts bedingte auf mehreren Säulen getragen
ID = c(1,1,1,1,2,2,2,3,3,3,3)
L40 = c(1, NA, NA, NA, 1, NA, NA, NA, 1, NA, NA)
K50 = c(NA, NA, NA, NA, NA, 1, NA, NA, NA, NA, 1)
df = data.frame(ID, L40, K50)
Wenn fehlende Werte in Spalten L40 und K50 auftreten, möchte ich in dieser Spalte die letzte nicht-fehlenden Wert auf neue Rechnung vorzutragen , abhängig davon, dass die ID der vorherigen ID entspricht und die Werte in L40 und K50 in der aktuellen Zeile leer sind. Ich habe den folgenden Code angewendet:
library(tidyr)
df2 <- df %>% group_by(ID) %>% fill(L40:K50)
Dies erreicht nicht, was ich suche. Ich möchte, dass der vorherige nicht fehlende Wert nur dann in die nächste Zeile übernommen wird, wenn die anderen Spalten (außer ID) in dieser Zeile leer sind. Das ist, was ich will:
ID = c(1,1,1,1,2,2,2,3,3,3,3)
L40 = c(1, 1, 1, 1, 1, NA, NA, NA, 1, 1, NA)
K50 = c(NA, NA, NA, NA, NA, 1, 1, NA, NA, NA, 1)
df3 = data.frame(ID, L40, K50)
Nein, das erzeugt genau das gleiche Ergebnis, das ich vermeiden möchte. Ich möchte nicht, dass der Wert von L40 in der 5. Reihe in die 6. Reihe übertragen wird. – udden2903
@ udden2903 Wie unterscheidet sich ID 2 von ID 3? – akrun
ID 2 wie in ID = 2. Entschuldigung für die Verwirrung. – udden2903