[R] 문자열 조작 "stringr" 패키지 소개

 정보

  • 업무명     : 문자열 조작 "stringr" 패키지 소개

  • 작성자     : 박진만

  • 작성일     : 2020-02-09

  • 설   명      :

  • 수정이력 :

 

 내용

[특징]

  • R 에서 문자열을 다루고 조작하는 패키지

 

[활용 자료]

  • 본문의 소스코드 실행

 

[자료 처리 방안 및 활용 분석 기법]

  • 없음

 

[사용 OS]

  • Windows10

 

[사용 언어]

  • R v3.6.2

  • R Studio v1.2.5033

 

 소스 코드

  • 기본적 특징

    • base 함수보다 빠름.

    • 함수 이름이 "str_"로 시작됨

    • 주요 문자열 처리는 이것 하나로 가능

    • "%> %" - 파이프 연산자

    • 기존의 stringi 패키지를 wrapping 하였음.

 

[명세]

설치

  • 1. CRAN 에서 설치
install.packages("stringr")

 

  • 2. GitHub 에서 설치
devtools::install_github("hadley/stringr")

 

  • 3. GitHubinstall 을 이용하여 설치

githubinstall::githubinstall("stringr")

 

 

문자열 가공

  • 문자열 연결 : str_c()

    • 문자열을 연결시키는 함수

    • paste()처럼 사용할 수 있음

str_c("Heasol", "Blog", sep = " ")

 

  • 문자열 벡터의 요소를 하나로 연결하려면 collapse=옵션을 사용

  • 이 부분도 paste()마찬가지로 사용할 수 있음.

x <- c("Seoul", "Busan", "Incheon")
str_c(x, collapse = ", ")

 

  • 문자열 벡터끼리 결합 역시 가능
y <- c("Special City", "City", "City")
(ni <- str_c(x, y, sep="-"))

 

  • 문자열 분할 : str_split()

    • 패턴이 일치하는 지점에서 분할시킴

    • 결과는 리스트 형식

str_split(ni, pattern = "-")

 

  • simplify=TRUE 옵션을 주는 경우 결과가 매트릭스 형으로 반환됨

str_split(ni, pattern = "-", simplify = TRUE)

 

  • "n=" 옵션을 사용하는 경우 선택적으로 분할 개수를 지정할 수 있음
  • 분할 지점은 문자열의 앞 부분 부터 우선하게 됨
str_split("S-e-o-u=l", pattern = "-", n=3)

 

  • 문자열 분할 : str_split_fixed()

    • str_split()마찬가지로 문자열을 분할하는 함수

    • 그러나 구분할 문자가 없는 경우 경우 길이가 0 인 문자열이 들어가게 됨

a <- c("Seoul-City","Heasol-Blog","Good")
str_split_fixed(a, pattern="-", n=2)

'

 

문자열 검색

  • 문자 포함 여부 검색 (논리값 리턴) : str_detect()

    • 벡터에서 패턴과 일치하는 문자가 있는지 여부를 판정

    • 반환 값은 논리벡터 (TRUE or FALSE)

x <- c("Seoul", "Busan", "Incheon")
str_detect(x, pattern="Se")

 

  • 패턴에 정규 표현식을 사용하는 것도 가능함.

str_detect(x,pattern="l$")

 

  • 문자 포함 여부 검색 (요소값 리턴) : str_subset()

    • 벡터에서 패턴과 일치하는 문자가 있는지 여부를 판정

    • 반환 값은 일치하는 문자열 백터

str_subset(x, pattern="S")

 

문자열 치환

  • 문자열 치환 (앞부분 치환) : str_replace()

    • 패턴과 일치하는 문자열 치환

    • 일치하는 패턴이 여러개인 경우 가장 앞 부분만을 치환시킴

str_replace(x, pattern="n", replacement="*")

 

  • 문자열 치환 (모두 치환) : str_replace_all()

    • 패턴과 일치하는 문자열 치환

    • 일치하는 패턴이 여러개인 경우 모두 치환시킴

str_replace_all(x, pattern="n", replacement="*")

 

문자열 추출

  • 일치하는 요소를 추출 : str_extrcat()

    • 패턴과 일치하는 부분만 추출

    • 변환값은 백터값임

    • 일치하는 패턴이 여러개인 경우 가장 앞의 하나만 추출함

str_extract(x, pattern="n")

 

  • 일치하는 모든 요소를 추출 : str_extract_all()

    • 패턴과 일치하는 부분 모두 추출

    • 반환 값은 기본적으로 리스트

str_extract_all(x, pattern="n")

 

  • 수치로 지정하여 추출 : str_sub()

    • start로 시작위치, end 로 끝 위치 지정

    • 마이너스(-) 를 사용하면 뒤에서부터 지정

str_sub(x, start=1, end=4)
str_sub(x, start=4, end=-1)

 

기타

  • 문자 인코딩 : str_conv()

    • 문자를 인코딩 시켜줌

    • iconv() 와 동일

str_conv(x, encoding="UTF-8")
  • 그 외

    • 문자열 추출 (그룹) : str_match()

    • 조건을 포함한 부분의 계산 : str_count()

    • 패턴의 위치 : str_locate()

    • 문자열의 길이 : str_length()

    • 문자열의 반복 : str_dup()

 

[전체 코드]

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com