close_btn
조회 수 102217 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print

문자열의 일부를 추출하는 함수는 기본 함수인 substr() 과 stringr 패키지 안의 str_sub() 함수를 가장 많이 쓰지요 ! 이 둘의 사용법과 차이점을 알려드리겠습니다.

 

##################################################################

substr("Statistics", 1, 4)
substr("Statistics", 7, 10)
str_sub("Statistics", 1, 4)
str_sub("Statistics", 7, 10)

s<-c("math","Statistics")
substr(s, 1, 3)

cities <- c("New York, NY", "Log Angeles, CA", "Peoria, IL")
substr(cities, nchar(cities)-1, nchar(cities))

#install.packages("stringr)
library(stringr)
str_sub(cities,-2,-1)

 

> substr("Statistics", 1, 4)
[1] "Stat"
> substr("Statistics", 7, 10)
[1] "tics"
> str_sub("Statistics", 1, 4)
[1] "Stat"
> str_sub("Statistics", 7, 10)
[1] "tics"

위와 같이 첫번째 인수에 문자열을 넣고 두번째와 세번째 인수로 해당 문자열 중 추출하고 픈 곳의 시작위치와 끝 위치를 지정합니다. 이것은 두 함수 모두 동일합니다 !

> s<-c("math","Statistics")
> substr(s, 1, 3)
[1] "mat" "Sta"
> str_sub(s, 1, 3)
[1] "mat" "Sta"

이번은 문자열을 vector로 넣은 경우입니다. 각각의 원소에 대해 함수를 적용하고 결과 역시 vector를 리턴합니다.

 

> cities <- c("New York, NY", "Log Angeles, CA", "Peoria, IL")
> substr(cities, nchar(cities)-1, nchar(cities))
[1] "NY" "CA" "IL"

이 때 문자열의 마지막부분을 기준으로 일부를 뽑아오고 싶다면 앞서 배운 문자열의 길이를 알려주는 함수인 nchar을 이용합니다.
위는 맨 뒤에서 바로앞과 맨 뒤 문자열을 가져오는 함수이지요 ! substr()위 경우 위와같이 문법을 사용합니다.

 

> #install.packages("stringr)
> library(stringr)
> str_sub(cities,-2,-1)
[1] "NY" "CA" "IL"

그러나 stringr 패키지의 str_sub()의 경우 다음과 같이 위치를 나타내는 인수에 마이너스를 붙이면 그것은 뒤를 기준으로 위치를 설정한 것이 됩니다. 따라서 -2,-1 넣으면 뒤에서 두번째 문자열에서 맨끝 문자열까지를 가져오라는 간단한 문법이 됩니다 !

 

 

?
  • ?
    지나가다 2020.07.20 12:10
    1. base::substr vs stringr::str_sub의 차이에 대해 한가지 첨언 드리자면,
    str_sub(text, start, stop): start에 index를 쓸 수 있고, index별로 리턴함하는 반면
    substr(text, start, stop): start에 index를 쓸 수 없고, 쓰더라도 첫번째 index 값만 리턴하는 군요.

    > text <- c('I am tom. you are jane')
    > idx <- c(2,4,5)
    > substr(text, idx, idx+3)
    [1] " am "
    > str_sub(text, idx, idx+3)
    [1] " am " "m to" " tom"
    >
  • ?
    R린이 2021.03.03 18:49
    idx <- c(2,4,5)에서 사실상 2에서 시작해 5에서 끝나게 되는 건가요

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 초급 R 강의 게시판 이용 관련 공지사항 1 DataMarket 2014.05.21 511928
50 초급 [BigData - R강의 초급] 정규표현식 regular expression 4강 (1) – Anchors "^", "$" 2 DataMarket2 2014.05.23 101687
49 초급 [BigData - R강의 초급] 정규표현식 regular expression 3강 – alternation "|" DataMarket2 2014.05.23 96710
48 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(4) – 게으른 수량자 "+?", "*?", "{n,}?" 1 DataMarket2 2014.05.23 110278
47 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(3) – 수량자 "?" 1 DataMarket2 2014.05.23 109658
46 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(2) – 수량자 {} 1 DataMarket2 2014.05.23 104352
45 초급 [BigData - R강의 초급] 정규표현식 regular expression 2강(1) – 수량자 “+”, “*” DataMarket2 2014.05.23 107127
44 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(4) – 문자열 형태표현 ".", "\W", "\D", "\S" DataMarket2 2014.05.23 94866
43 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(3) – 문자열 형태표현 "\p{Hangul}"(한글), 특수문자 2 DataMarket2 2014.05.23 102201
42 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(2) – 문자열 형태표현 “\d”, “\s” DataMarket2 2014.05.23 93640
41 초급 [BigData - R강의 초급] 정규표현식 regular expression 1강(1) – 문자열 형태표현 ".", "\w" 3 DataMarket2 2014.05.23 113699
40 초급 [BigData - R강의 초급] 따옴표를 문자열로 인식시키려면? - escaper \ DataMarket2 2014.05.23 69634
39 초급 [BigData - R강의 초급] 문자열 패턴 regular expression 연습 DataMarket2 2014.05.23 70284
38 초급 [BigData - R강의 초급] 문자열 검색 – grep, regexpr, gregexpr DataMarket2 2014.05.23 100683
37 초급 [BigData - R강의 초급] 문자열 찾아바꾸기 – sub, gsub 1 DataMarket2 2014.05.23 90896
36 초급 [BigData - R강의 초급] 문자열 나누기 – strsplit, str_split DataMarket2 2014.05.23 105946
» 초급 [BigData - R강의 초급] 문자열 일부 추출 – substr(), str_sub() 비교 2 DataMarket2 2014.05.23 102217
34 초급 [BigData - R강의 초급] 문자열 포멧 출력 – sprintf 함수 1 DataMarket2 2014.05.23 59769
33 초급 [BigData - R강의 초급] 문자열 길이 – nchar 함수 1 DataMarket2 2014.05.23 57839
32 초급 [BigData - R강의 초급] 문자열 이어붙이기 - paste, paste0 함수 1 DataMarket2 2014.05.23 69636
31 초급 [BigData - R강의 초급] 결측치 처리 함수 - complete.cases DataMarket2 2014.05.23 50921
Board Pagination ‹ Prev 1 2 ... 3 Next ›
/ 3

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5