Я хочу извлечь первые (или последние) n символов строки. Это будет эквивалент Excel LEFT()
и RIGHT()
. Небольшой пример:
# create a string
a <- paste('left', 'right', sep = '')
a
# [1] "leftright"
Я хотел бы создать b
строку, равную первым 4 буквам a
:
b
# [1] "left"
Что я должен делать?
stringr
решение.stringr
Пакет предоставляетstr_sub
функцию, которая немного проще в использовании , чемsubstr
, особенно если вы хотите , чтобы извлечь правильные части вашей строки:R> str_sub("leftright",1,4) [1] "left" R> str_sub("leftright",-5,-1) [1] "right"
источник
R
:)stringr
избавит вас почти от такого же раздражения, какlubridate
.Вы можете легко получить функции Right () и Left (), начиная с пакета Rbase:
правильная функция
right = function (string, char) { substr(string,nchar(string)-(char-1),nchar(string)) }
левая функция
left = function (string,char) { substr(string,1,char) }
вы можете использовать эти две пользовательские функции точно так же, как left () и right () в excel. Надеюсь, вы найдете это полезным
источник
Сделайте это простым и используйте базовые функции 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()
Функция сообщает вам , где начать и остановитьsubstr(x, start, stop)
источник
Если вы едете из Microsoft Excel, следующие функции будут аналогичны
LEFT()
,RIGHT()
иMID()
функции.# 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) }
Примеры:
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"
источник