376 Stimmen

Extrahieren der letzten n Zeichen aus einer Zeichenkette in R

Wie kann ich die letzten n Zeichen einer Zeichenkette in R ermitteln? Gibt es eine Funktion wie die von SQL RIGHT?

4voto

JP Fonseca Punkte 41

Jemand hat schon einmal eine ähnliche Lösung wie ich verwendet, aber ich finde es einfacher, wie folgt zu denken:

> text<-"some text in a string" # we want to have only the last word "string" with 6 letter
> n<-5 #as the last character will be counted with nchar(), here we discount 1
> substr(x=text,start=nchar(text)-n,stop=nchar(text))

Dadurch werden die letzten Zeichen wie gewünscht angezeigt.

4voto

gbganalyst Punkte 334

Wenn Sie von Microsoft Excel oder Google Sheets kommen, kennen Sie Funktionen wie LEFT() , RIGHT() et MID() . Ich habe ein Paket erstellt, das als forstringr und seine Entwicklungsversion befindet sich derzeit auf Github .

if(!require("devtools")){
 install.packages("devtools")
}

devtools::install_github("gbganalyst/forstringr")

library(forstringr)
  • die str_left() : Zählt von links und extrahiert dann n Zeichen

  • die str_right() - Diese zählt von rechts und extrahiert dann n Zeichen

  • die str_mid() - Dieser Ausschnitt zeigt Zeichen aus der Mitte

Beispiele:

x <- "some text in a string"

str_left(x, 4)

[1] "some"

str_right(x, 6)

[1] "string"

str_mid(x, 6, 4)

[1] "text"

1voto

Anurag Mishra Punkte 29

Ich habe den folgenden Code verwendet, um das letzte Zeichen einer Zeichenkette zu ermitteln.

    substr(output, nchar(stringOfInterest), nchar(stringOfInterest))

Sie können mit nchar(stringOfInterest) spielen, um herauszufinden, wie Sie die letzten Zeichen erhalten.

0voto

xm1 Punkte 1435

Eine kleine Änderung der Lösung von @Andrie ergibt auch die Ergänzung:

substrR <- function(x, n) { 
  if(n > 0) substr(x, (nchar(x)-n+1), nchar(x)) else substr(x, 1, (nchar(x)+n))
}
x <- "moSvmC20F.5.rda"
substrR(x,-4)
[1] "moSvmC20F.5"

Das war es, wonach ich gesucht habe. Und es lädt auf die linke Seite ein:

substrL <- function(x, n){ 
  if(n > 0) substr(x, 1, n) else substr(x, -n+1, nchar(x))
}
substrL(substrR(x,-4),-2)
[1] "SvmC20F.5"

0voto

RanonKahn Punkte 786

Nur für den Fall, dass eine Reihe von Zeichen ausgewählt werden muss:

# For example, to get the date part from the string

substrRightRange <- function(x, m, n){substr(x, nchar(x)-m+1, nchar(x)-m+n)}

value <- "REGNDATE:20170526RN" 
substrRightRange(value, 10, 8)

[1] "20170526"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X