문자열의 첫 번째 (또는 마지막) n 개 문자 추출


83

문자열 의 첫 번째 (또는 마지막) n 문자 를 추출하고 싶습니다 . 이것은 Excel의 LEFT()RIGHT(). 작은 예 :

# create a string
a <- paste('left', 'right', sep = '')
a
# [1] "leftright"

b의 처음 4 글자와 동일한 문자열 을 생성 하고 싶습니다 a.

b
# [1] "left"

어떻게해야합니까?

답변:


89

보다 ?substr

R> substr(a, 1, 4)
[1] "left"

아래 @juba의 답변을 살펴 보는 것이 좋습니다. 그는 stringr해결책을 제공합니다 .
Jochem 2010-08-27

57

stringr패키지는 특히 문자열의 오른쪽 부분을 추출하려는 경우 str_sub보다 사용하기 쉬운 함수를 제공 substr합니다.

R> str_sub("leftright",1,4)
[1] "left"
R> str_sub("leftright",-5,-1)
[1] "right"

3
힌트 주셔서 감사합니다, juba; 그런데 나는 기본을 다루고 있기 때문에 내가 RCS '대답을 받아 들일 것이라고 생각 R:)
리사 앤

4
아는 기본 R은 좋다, 그러나 문자열 함수에 오면 @juba에서 언급 한 바와 같이 당신은 단지 stringr를 사용하는 경우, 당신의 인생이 쉬울 것
디터 Menne을

1
나는 Dieter에 동의합니다. 배움 stringr은 당신이 lubridate.
앤드류 Brēza

25

Rbase 패키지에서 시작하여 Right () 및 Left () 함수를 쉽게 얻을 수 있습니다.

  • 올바른 기능

    right = function (string, char) {
        substr(string,nchar(string)-(char-1),nchar(string))
    }
    
  • 왼쪽 기능

    left = function (string,char) {
        substr(string,1,char)
    }
    

이 두 가지 사용자 정의 함수를 Excel에서 left () 및 right ()와 똑같이 사용할 수 있습니다. 유용하게 사용되기를 바랍니다.


6

간단하게 만들고 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)


2

당신의 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"

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.