2016-06-27 12 views
0

Hypothetische Datenrahmen:R: eine neue Spalte in einer oder mehreren möglichen Strings basierend Datenrahmen Bestücken auf passende

strings  new column 
mesh   1 
foo   0 
bar   0 
tack   1 
suture  1 

würde ich die neue Spalte, die „1“ enthalten, wenn df $ Strings mit den Strings „Mesh enthält "," tack "oder" sutur ". Andernfalls sollte in der gleichen Zeile Null angezeigt werden. Ich habe versucht, die folgenden:

df$new_column <- ifelse(grepl("mesh" | "tack" | "sutur", 
    df$strings, ignore.case = T), "1", "0") 

aber habe diesen Fehler:

Error in "mesh" | "tack" : 
    operations are possible only for numeric, logical or complex types 

Vielen Dank im Voraus.

Antwort

4

Sie wollen in grep einen einzelnen String verwenden:

df$new_column <- ifelse(grepl("mesh|tack|sutur", df$strings, ignore.case = T), 
         "1", "0") 

funktionieren wird, aber die folgenden wird schneller:

df$new_column <- +(grepl("mesh|tack|sutur", df$strings, ignore.case = T)) 

Dies wird wieder eine 0 und 1 Integer-Vektor

+0

Das macht den Trick. Vielen Dank! – soosus

3

Wir können auch %in%

df$new_column <- as.integer(df$strings %in% c("mesh", "tack", "sutur")) 
verwenden
+1

Danke! Dieser Ansatz hat auch für mich funktioniert. – soosus