Vergleich von grep() und grep() in r: was ist der unterschied?
Zwei Funktionen, die in R oft verwechselt werden, sind grep() und grepl() . Mit beiden Funktionen können Sie sehen, ob ein bestimmtes Muster in einer Zeichenfolge vorhanden ist, sie liefern jedoch unterschiedliche Ergebnisse:
- grepl() gibt TRUE zurück, wenn ein Muster in einer Zeichenfolge vorhanden ist.
- grep() gibt einen Vektor von String-Indizes zurück, der das Muster enthält.
Das folgende Beispiel verdeutlicht diesen Unterschied:
#create a vector of data data <- c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center') grep ('Guard', data) [1] 1 2 grepl ('Guard', data) [1] TRUE TRUE FALSE FALSE FALSE
Die folgenden Beispiele zeigen, wann Sie eine dieser Funktionen gegenüber einer anderen verwenden möchten.
Wann sollte grepl() verwendet werden?
1. Filtern Sie Zeilen, die eine bestimmte Zeichenfolge enthalten
Eine der häufigsten Anwendungen von grepl() ist das Filtern von Zeilen in einem Datenrahmen, die eine bestimmte Zeichenfolge enthalten:
library(dplyr) #create data frame df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'), points = c(12, 15, 19, 22, 32), rebounds = c(5, 7, 7, 12, 11)) #filter rows that contain the string 'Guard' in the player column df %>% filter( grepl ('Guard', player)) player points rebounds 1 P Guard 12 5 2 S Guard 15 7
Verwandt: So filtern Sie Zeilen, die eine bestimmte Zeichenfolge enthalten, mit dplyr
Wann sollte grep() verwendet werden?
1. Wählen Sie Spalten aus, die eine bestimmte Zeichenfolge enthalten
Mit grep() können Sie Spalten in einem Datenrahmen auswählen, die eine bestimmte Zeichenfolge enthalten:
library(dplyr) #create data frame df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'), points = c(12, 15, 19, 22, 32), rebounds = c(5, 7, 7, 12, 11)) #select columns that contain the string 'p' in their name df %>% select( grep ('p', colnames(df))) player points 1 P Guard 12 2 S Guard 15 3S Forward 19 4P Forward 22 5 Center 32
2. Zählen Sie die Anzahl der Zeilen, die eine bestimmte Zeichenfolge enthalten
Mit grep() können Sie die Anzahl der Zeilen in einem Datenrahmen zählen, der eine bestimmte Zeichenfolge enthält:
#create data frame df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'), points = c(12, 15, 19, 22, 32), rebounds = c(5, 7, 7, 12, 11)) #count how many rows contain the string 'Guard' in the player column length( grep ('Guard', df$player)) [1] 2
Weitere R-Tutorials finden Sie hier .