So habe ich die folgenden Daten, lassen Sie uns als „my_data“ sagen:Regular Expression in R mit einem negativen Lookbehind
Storm.Type
TYPHOON
SEVERE STORM
TROPICAL STORM
SNOWSTORM AND HIGH WINDS
Was ich will ist zu klassifizieren, ob jedes Element in my_data $ Storm.Type ist ein Sturm, aber ich will nicht tropische Stürme wie Stürme sind (ich werde sie separat klassifizieren), so dass ich hätte
Storm.Type Is.Storm
TYPHOON 0
SEVERE STORM 1
TROPICAL STORM 0
SNOWSTORM AND HIGH WINDS 1
ich den folgenden Code geschrieben haben:
my_data$Is.Storm <- my_data[grep("(?<!TROPICAL) (?i)STORM"), "Storm.Type"]
Aber das gibt den "SEVERE STORM" nur als Sturm zurück (aber ohne SNOWSTORM UND HOHE WINDS). Vielen Dank!
Was ist der Sinn von '' in Ihrem regulären Ausdruck (i?)? Das Problem ist, dass Sie nach der Zeichenfolge '" STORM "' mit einem vorangestellten Leerzeichen suchen, so dass '" SNOWSTORM "nicht qualifiziert ist. –
Hallo Blau. Während ich Bens Antwort akzeptiert habe, bist du tatsächlich mit MY-Code auf das Problem gestoßen. Ich möchte meinen Code so machen, dass er sich nicht um diesen Raum kümmert (wenn STORM also in THUNDERSTORM oder SNOWSTORM ist, möchte ich das ebenso wie STORM selbst). Weißt du, wie ich diesen Raum, den mein Code sucht, loswerden würde? Der Punkt der (? I) ist die Chance, dass jemand einen Sturm als "Sturm" oder "Storm" oder "Storm", usw. –