Chcę wyodrębnić pierwsze (lub ostatnie) n znaków ciągu. Byłoby to odpowiednikiem programu Excel LEFT()
i RIGHT()
. Mały przykład:
# create a string
a <- paste('left', 'right', sep = '')
a
# [1] "leftright"
Chciałbym utworzyć b
ciąg, który jest równy 4 pierwszym literom a
:
b
# [1] "left"
Co powinienem zrobić?
stringr
rozwiązanie.stringr
Pakiet zawierastr_sub
funkcję, która jest nieco łatwiejsza w użyciu niżsubstr
, zwłaszcza, jeśli chcesz, aby wyodrębnić odpowiednie fragmenty swojej ciąg:R> str_sub("leftright",1,4) [1] "left" R> str_sub("leftright",-5,-1) [1] "right"
źródło
R
:)stringr
zaoszczędzi ci prawie tyle samo irytacji, colubridate
.Możesz łatwo uzyskać funkcje Right () i Left () zaczynając od pakietu Rbase:
właściwa funkcja
right = function (string, char) { substr(string,nchar(string)-(char-1),nchar(string)) }
funkcja lewa
left = function (string,char) { substr(string,1,char) }
możesz używać tych dwóch funkcji niestandardowych dokładnie tak samo, jak left () i right () w programie Excel. Mam nadzieję, że okaże się to przydatne
źródło
Uprość to i użyj podstawowych funkcji R:
# To get the LEFT part: > substr(a, 1, 4) [1] "left" > # To get the MIDDLE part: > substr(a, 3, 7) [1] "ftrig" > # To get the RIGHT part: > substr(a, 5, 10) [1] "right"
substr()
Funkcja powie Ci, gdzie start i stopsubstr(x, start, stop)
źródło
Jeśli pochodzą z programu Microsoft Excel, następujące funkcje będą podobne
LEFT()
,RIGHT()
orazMID()
funkcji.# This counts from the left and then extract n characters str_left <- function(string, n) { substr(string, 1, n) } # This counts from the right and then extract n characters str_right <- function(string, n) { substr(string, nchar(string) - (n - 1), nchar(string)) } # This extract characters from the middle str_mid <- function(string, from = 2, to = 5){ substr(string, from, to) }
Przykłady:
x <- "some text in a string" str_left(x, 4) [1] "some" str_right(x, 6) [1] "string" str_mid(x, 6, 9) [1] "text"
źródło