Seite 1 von 1

Character Suche mittels grep

Verfasst: Mi Okt 27, 2021 3:59 pm
von gming11
Hallo,

ich will anhand eines Textes suchen wie oft ein bestimmtes Wort vorkommt. Ich habe dafür den Text in characters aufgespaltet und dachte die Funktion „grep“ wäre sinnvoll.

Anbei mal ein Pseudocode:

Code: Alles auswählen

Test1 <- „Ich komm leider nicht weiter bei dieser Wortsuche, darum bitte ich dich"

Test1A <- strsplit(Test1, " ")

Test1
Test1A

# Ziel: Ich will wissen, wie oft „ich" vorkommt. Im Beispiel wäre es 2x rein und 2x mal unrein durch „nicht“ und „dich“.

grep("euro", Test1A)
Liebe Grüße

Re: Character Suche mittels grep

Verfasst: Mi Okt 27, 2021 4:05 pm
von bigben
Hallo!

Hilft das hier?

Code: Alles auswählen

Test1 <- "Ich komm leider nicht weiter bei dieser Wortsuche, darum bitte ich dich"
gregexpr("ich", Test1) # findet "ich" an Stelle 18, 64 und 69
gregexpr("ich", tolower(Test1)) # findet auch "Ich" an Stelle 1
sinnvollerweise vielleicht in eine Funktion verpacken:

Code: Alles auswählen

wie_oft <- function(pattern, String)
    length(unlist(gregexpr(pattern, tolower(String))))

wie_oft("ich", "Ich kann Dir nur sagen, dass mich dünkt, das käme 2x vor")
Und noch besser, die Funktion irgendwo gut dokumentieren. Als Alternative zu tolower hat gregexpr auch ein Argument ignore.case

LG,
Bernhard

Re: Character Suche mittels grep

Verfasst: Mi Okt 27, 2021 4:11 pm
von gming11
Danke ja sowas habe ich auch schon probiert. Mir ging es darum eine Möglichkeit zufinden, zu sehen wie oft das Wort in reiner Form vorkommt ergo „ich“ und wie oft in unreiner Form z.b „dich“ und das dann auch so ausgegeben wird, welche Charakters gefunden werden.

Danke für die Funktion ,das geht schon in die Richtung!

Re: Character Suche mittels grep

Verfasst: Mi Okt 27, 2021 4:17 pm
von bigben
Naja, wenn gregexpr Dir sowohl zurückgibt, wo genau der Treffer ist und wie lang der Treffer ist, dann kannst Du Dir zur Not was programmieren um zu schauen, ob davor und dahinter ein Leerzeichen steht. Oder Du versuchst Dich an schlaueren regex. Ganz banal mal eine regex die nur solche ich finden, vor und hinter denen ein Space steht

Code: Alles auswählen

Test1 <- "Ich komm leider nicht weiter bei dieser Wortsuche, darum bitte ich dich"
gregexpr("\ ich\ ", tolower(Test1)) # findet nur das 'ich' an Stelle 63
Das kann so nicht bleiben, es müssen ja wahrscheinlich auch Satzzeichen anstelle von Leerzeichen erkannt werden. In Regex bin ich wirklich nicht gut, aber da sollte sich bedarfsgerecht was stricken lassen.

LG,
Bernhard

PS: Haben Dir Die Antworten zu den SChulnotenverteilungen eigentlich geholfen? Und die zu dem Histogramm? Und der zum Barplot von zwei Variablen?