Substring von einem String

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
steven_y
Beiträge: 25
Registriert: Do Nov 19, 2020 12:16 pm

Substring von einem String

Beitrag von steven_y »

Hallo,

ich möchte den Substring von einem String extrahieren. Bisher verwende ich sub und gsub. Problem ist allerdings, dass sich der Separator wiederholt.

Code: Alles auswählen

a<-"text_wichtig_text"
Hier möchte ich nun nur das Wort "wichtig" extrahieren. Mit der Position zu arbeiten geht nicht, da diese sich ändert. Problem bei subg und gsub ist, dass ich (meines Wissens nach) die Position des Separtors nicht festlegen kann
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Substring von einem String

Beitrag von student »

Kennst Du das Paket stringr? Hier ein Beispiel dazu...
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Substring von einem String

Beitrag von bigben »

Wir haben jetzt nur ein Beispiel für einen solchen Text. Was ist den die allgemeine Struktur dieser Strings? Wie definierst Du den Teil, den Du extrahieren willst? Gib mal entweder eine sprachliche Definition, was da zu extrahieren ist oder eine ganze Reihe von Beispielen.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
steven_y
Beiträge: 25
Registriert: Do Nov 19, 2020 12:16 pm

Re: Substring von einem String

Beitrag von steven_y »

Ich glaube mein Problem ist, dass mir nicht klar ist, wie ich das "pattern" codieren kann.

Bei Stack overflow habe ich folgendes gefunden

Code: Alles auswählen

a<-" anything goes here, STR1 GET_ME STR2, anything goes here"

gsub(".*STR1 (.+) STR2.*", "\\1", a)
Ersetze ich jedoch STR1 und STR2 mit "_", klappt es nicht mehr
steven_y
Beiträge: 25
Registriert: Do Nov 19, 2020 12:16 pm

Re: Substring von einem String

Beitrag von steven_y »

bigben hat geschrieben: Mo Dez 14, 2020 10:08 am Wir haben jetzt nur ein Beispiel für einen solchen Text. Was ist den die allgemeine Struktur dieser Strings? Wie definierst Du den Teil, den Du extrahieren willst? Gib mal entweder eine sprachliche Definition, was da zu extrahieren ist oder eine ganze Reihe von Beispielen.

LG,
Bernhard
Die Struktur des Strings ist variabl, daher ist die Position keine Option. Daher soll zwischen den beiden Separatoren "_" extrahiert werden.
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Substring von einem String

Beitrag von bigben »

steven_y hat geschrieben: Mo Dez 14, 2020 10:37 amDaher soll zwischen den beiden Separatoren "_" extrahiert werden.
Das wollte ich lesen. Wie gefällt Dir das hier?

Code: Alles auswählen

test <- c("abc_hallo_dfg", "()%_Du_l","du_da_123", "123_!_444", "schubidu", "greedy_greedy_greedy_greedy")


library(stringi)
stri_extract_all_regex(test, "_.+_")
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
steven_y
Beiträge: 25
Registriert: Do Nov 19, 2020 12:16 pm

Re: Substring von einem String

Beitrag von steven_y »

Fast am Ziel, danke. Letztes Problem ist, dass die Separtoren mit extrahiert werden.

Code: Alles auswählen

 
 a<-"text_wichtig_text"
 b <- stri_extract_all_regex(a, "_.+_")
 
Statt "_wichtig_" möchte ich "wichtig"
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Substring von einem String

Beitrag von bigben »

steven_y hat geschrieben: Mo Dez 14, 2020 11:50 amStatt "_wichtig_" möchte ich "wichtig"
Du bekommst beides mit

Code: Alles auswählen

stri_match_all_regex(test, "_(.+)_")
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Substring von einem String

Beitrag von bigben »

Nachtrag: Das hier ist ganz gut und Liefert praktischerweise einen Vektor anstelle einer Liste:

Code: Alles auswählen

test <- c("abc_hallo_dfg", "()%_Du_l","du_da_123", "123_!_444", "schubidu", "greedy_greedy_greedy_greedy")


library(stringi)
trimws(stri_extract_all_regex(test, "_.+_"), whitespace = "_")
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten