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 .

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert