Ok, also habe ich eine Reihe von Zahlen. Ich möchte Werte von weniger als -0,10 ausschließen. Wenn jedoch nach dem ersten -0.10 eine Zahl über -0,10 erscheint, ist diese zu ignorieren.R - Zahlen aus der Serie ausschließen
Ich versuche, so weit dplyr
für die Aufgabe Gruppierung von rleid
zu verwenden, und dann mit einer Art und Weise zu kommen versuchte row_number()
so in meiner ersten Reihe von Zahlen zu verwenden, habe ich die Position des unter first
Wert markieren - 0.10. Sobald ich die Zeilennummer kenne, können alle anderen Werte after
die erste Instanz ignoriert und von der Ausgabe ausgeschlossen werden.
I diese Dummy-Daten verwenden:
x <- c(0,0,-0.07347,-0.08351,-0.09091,-0.10624,-0.08087,-0.10677,-0.14588,-0.13901,-0.13689,0,0,0,-0.09091,0.10624,0.08087,0.10677,0,0)
y <- c(0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0)
df <- data.frame (x,y)
# Remove leading 1 on x column
df$z <- ifelse(df$x <0 | df$x >0, 1,0)
# Exclude values (all less than -0.1)
df$output <- ifelse(df$z == 1 & df$x > -0.1 ,1,0)
die gewünschte Ausgabe ist, wenn df$z == 1
und auf der ersten Instanz von <-0.10
print 0
... bis zum Ende der Reihe (unabhängig vom Wert der folgenden Nummern)
Dieses Bild zeigt dies und korrekte Ausgabe ist in grün.
* EDIT
Lösung: Umgang mit mehreren Läufen über -0,010
df %>%
group_by(rleid=rleid(z)) %>%
mutate(outcome=as.numeric(!row_number() > row_number(z==1 & x < -0.1))) %>%
mutate(outcome=replace(outcome,z == 1 & x < -0.1, 0)) %>%
mutate(outcome=replace(outcome,z == 0, 0)) %>%
ungroup() %>% select(-rleid) %>% data.frame()
Wenn Sie das Foto umbuchen, von uns kann es bearbeiten in für zukünftige Benutzer –
Ich denke, das Problem ist, dass Ihre 'artprice' ein Zeichen. Es sollte funktionieren, wenn Sie Folgendes tun: 'newdf $ artprice <- as.numeric (gsub (" \\ $ "," ", newdf $ artprice))' und erneut ausführen. –
Ok, wie ich gerne lerne ... warum schließen wir \\ $ "," "ein? Ist das, um irgendwelche dieser fehlenden Zeilen, Werte etc. zu eliminieren? –