Extrahieren und Hinzufügen von Strings

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
retep
Beiträge: 99
Registriert: Do Sep 06, 2018 7:50 pm

Extrahieren und Hinzufügen von Strings

Beitrag von retep »

Hallo,

ich habe trotz Webrecherche keine Lösung zu meinem Problem gefunden. Im Anhang ist eine Textdatei als Mini- Datensatz. Diese Spalte enthält die Probennamen als Tiefe. Nicht immer schön geschrieben aber der Bearbeiter wusste nicht dass man so akkurat wie möglich die Probenbezeichnung mitliefern sollte. Wie auch immer! In Wahrheit ist der Datensatz viel größer.

Problem Nr. 1

Ich habe aus der Spalte die Zahlenkombination (Tiefe) extrahiert und jetzt möchte ich den Fehler des Bearbeiters ausbügeln und will die ersten beiden Ziffern aus der Spalte (Name) zu den beiden Ziffern aus der Spalte Depth_bottom hinzufügen. Ist sowas möglich? Hier der Beispiel- Code

Code: Alles auswählen

library(readr)
library(tidyverse)
read_delim("reprex_string.txt", 
           delim = "\t", escape_double = FALSE, 
           trim_ws = TRUE)%>%
  mutate (Depth_bottom = str_sub(Name , 6, 11))%>%
  relocate("Depth_bottom", .after = "Name")%>%
  mutate (Depth_top = str_sub(Name , 1, 4))%>%
  relocate("Depth_top", .after = "Depth_bottom")%>%
  mutate_at(c(2:3), as.numeric)%>%
  arrange(Name)
Im Resultat soll h in der Spalte Depth_bottom immer eine vierstellige Zahl stehen. So wie korrekt dargestellt in Zeile Nummer 10:
Name Depth_bottom Depth_top
4597-4600 4600 4597

Problem Nr. 2

Ich wollte gerne die Differenz zwischen den "Depth_bottom" "Depth_top" berechnen aber versetzt! Ich brauche also immer von der vogergehenden Zeile in Depth_bottom - eine Zeile drüber Depth_top die Differenz. In Excel ist das möglich über eine zeilenversetzte Rechenoperation. Wäre sowas in dplyr möglich und wie würde das aussehen?

Beispiel:

Name Depth_bottom Depth_top Thickness
4597-4600 4600 4597 882
5476-79 5479 5476

Beispiel Rechnung:
5479-4597 = 882

Vielen Dank für Eure Mühe und Hilfe,

retep
Dateianhänge
reprex_string.txt
(95 Bytes) 88-mal heruntergeladen
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Extrahieren und Hinzufügen von Strings

Beitrag von EDi »

Ich weiß nicht ob ich es ganz verstanden habe...
So hier?

Code: Alles auswählen

library(dplyr)

read.table("http://forum.r-statistik.de/download/file.php?id=1707", 
             header = TRUE) %>%
  # parse strings
  mutate(Depth_bottom1 = gsub("^(.*)-(.*)$", "\\2", Name),
         Depth_top = gsub("^(.*)-(.*)$", "\\1", Name),
         Depth_bottom = case_when(
           nchar(Depth_bottom1) == 2 ~ paste0(substr(Depth_top, 1, 2), Depth_bottom1),
           TRUE ~ Depth_bottom1),
         ) %>%
  # coerce to numeric
  mutate(across(starts_with("Depth"), as.numeric)) %>%
  # lagged difference
  mutate(delta_Depth_top = Depth_bottom-lag(Depth_top))

Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
retep
Beiträge: 99
Registriert: Do Sep 06, 2018 7:50 pm

Re: Extrahieren und Hinzufügen von Strings

Beitrag von retep »

Hallo Edi,

hab vielen Dank für deine Nachricht! Bitte entschuldige dass ich nicht sofort reagiert habe. Ich hatte vergessen, den Haken bei automatische Benachrichtigung zu setzen.

Ich probiere deinen Workaround aus und melde mich ob es funktioniert hat.

Nochmals Entschuldigung & vielen Dank,

retep
retep
Beiträge: 99
Registriert: Do Sep 06, 2018 7:50 pm

Re: Extrahieren und Hinzufügen von Strings

Beitrag von retep »

Hallo EDi,

funktioniert super!!!! EIne Bitte und Frage noch,

zur zum Verständnis, darf ich dich bitten mir noch ein paar kleine Kommentare bzgl. der Extrahierug der Strings zu hinterlassen. Damit ich beim nächsten Mal alles alleine machen kann!

Das wäre enorm hilfreich! Vielleicht hast du noch Quellen im Web, z.Bsp. stackoverflow???

Nochmals vielen Dank für deine enorm hifreiche Unterstützung,

retep
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Extrahieren und Hinzufügen von Strings

Beitrag von EDi »

darf ich dich bitten mir noch ein paar kleine Kommentare bzgl. der Extrahierug der Strings zu hinterlassen. Damit ich beim nächsten Mal alles alleine machen kann!
Hmm, das ist RegEx/Regular expressions/Reguläre Ausdrücke. Für alle Programmiersprachen sinnvoll das in seinem Werkzeugkasten zu haben.

Material hab ich jetzt keins direkt, aber es findet sich zig Sachen im Internet.
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
Jamie Zawinski

Nur als Hinweis Regex nicht zu exzessiv zu benutzen (Ich hab z.B. regexe viele Zeilen lang um R Code zu analysieren :o - Da gibt es bessere Methoden für....)
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten