정보

    • 업무명     : 문자열 조작 "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
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기