Ich muss die 0 durch 1 ersetzen, aber nur dort, wo die Werte die folgenden Bedingungen erfüllen; "1 0 1" oder "0 1" (wenn am Anfang) oder "1 0" (wenn am Ende). Gegeben das Beispiel Datenrahmen:Ersetzen Sie die Zeilenwerte im Datenframe, die spezielle Bedingungen erfüllen
df <- data.frame(a = c(1,0,1,0,1,1,1,0,1,1,1),
b = c(1,1,1,0,1,1,1,0,1,1,1),
c = c(1,0,1,1,1,0,1,0,1,1,1),
d = c(1,1,1,0,1,1,1,1,1,1,1),
e = c(1,0,1,0,1,1,1,1,1,1,1),
f = c(1,1,1,1,1,1,1,1,1,0,1))
df
Es brauchen würde es zurück:
df.result <- data.frame(a = c(1,1,1,0,1,1,1,0,1,1,1),
b = c(1,1,1,0,1,1,1,0,1,1,1),
c = c(1,1,1,1,1,1,1,0,1,1,1),
d = c(1,1,1,0,1,1,1,1,1,1,1),
e = c(1,1,1,0,1,1,1,1,1,1,1),
f = c(1,1,1,1,1,1,1,1,1,1,1))
df.result
Beachten Sie, dass die entsprechende 0'en hat 1 s geändert. Im Wesentlichen versuche ich, alle Nullen zu ersetzen, die einzeln nacheinander auftreten.
Irgendeine Idee, wie man das in R erreicht?
Vielen Dank im Voraus.
'rollapply()' aus dem Paket 'zoo' für jede Zeile nützlich sein könnte . ... oder 'rle()' von 'Basis' – jogo