Extrahieren von dezimal-zahlen aus einem string
Ich habe einen string wie "3.1 ml"
oder "abc 3.1 xywazw"
Möchte ich extrahieren "3.1"
aus dieser string. Ich habe festgestellt, viele Fragen auf stackoverflow über die Extraktion von zahlen aus einer Zeichenkette, aber keine Lösung funktioniert für den Fall von Dezimalzahlen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Ansatz macht den Dezimalpunkt und die Dezimalstellen Bruchteil optional und ermöglicht es, mehrere zahlen entnommen werden:
Die Besorgnis über negative zahlen werden mit Adresse optional perl-look-ahead:
*
Quantifizierer für das Dezimalzeichen ist das Potenzial zum match-Abständen, ausgedrückt als1..2
oder2...3
etc. Siehe @Wojciech Sobala Lösung mit der optionalen Quantifizierer (?
).*
zu{0,1}
Verwenden Sie die
stringr
Bibliothek:"\\d+\\.\\d+"
13.1
zum Beispiel.str_extract(x, "\\d+\\.*\\d*")
ist besser.str_extract(string, "\\-*\\d+\\.*\\d*")
, denkst du es ist richtig ? (es ist neu also nicht zu sehr experimentiert, bisher)str_extract(x, "-*\\d+\\.*\\d*")
Regulären Ausdruck für Gleitkommazahl aus http://www.regular-expressions.info/floatingpoint.html mit einer kleinen Anpassung, um die Arbeit in R.
Können Sie reguläre Ausdrücke verwenden :
regexpr
zurückgibt, die die Startposition und die Länge der übereinstimmenden Zeichenkette.regmatches
gibt die passt. Sie können dann konvertieren Sie Sie in eine Reihe.as.numeric
.