/ R

R 기초강의(9) - R 문자열 처리

R 강좌는 여러 절로 구성되어 있습니다.


R 문자열 처리

빅데이터를 처리하기 위해서 필요한 문자열을 자르거나 교체 혹은 추출하는 작업은 항상 빈번하게 발생합니다. 문자열을 효과적으로 처리하기 위한 패키지인 stringr을 설치하고 제공되는 함수를 알아보도록 하겠습니다.

stringr package가 제공하는 함수

  • str_length() : 문자열 길이 반환
  • str_c() : 문자열 연결, str_join()의 개선형
  • str_sub() : 범위에 해당하는 부분 문자열 생성
  • str_split() : 구분자를 기준으로 문자열을 분리하여 부분 문자열 생성
  • str_replace() : 기존 문자열을 특정 문자열로 교체
  • str_extract() : 문자열에서 특정 문자열 패턴의 첫번째 문자열 추출
  • str_extract_all() : 문자열에서 특정 문자열 패턴의 모든 문자열 추출
  • str_locate() : 문자열에서 특정 문자열 패턴의 첫번째 위치 찾기
  • str_locate_all() : 문자열에서 특정 문자열 패턴의 모든 위치 찾기
# 패캐지 설치와 로드

install.packages('stringr')
library("stringr")

# 문자열 길이와 위치

myStr <- "Hongkd1051Leess1002YOU25홍길동2005"

str_length(myStr)       # 31

str_locate(myStr,"홍길동")

# 부분문자열 

str_sub(myStr,1,str_length(myStr)-7)

# 대소문자 변경

str_to_upper(myStr)

str_to_lower(myStr)

# 문자열 교체, 결합, 분리

myStr <- "Hongkd1051,Leess1002,YOU25,홍길동2005"
str_replace(myStr,"Hong","KIM")

str_c(myStr,",이순신2019")

str_split(myStr,",")

str1 <- c("홍길동","김길동","이순신","강감찬")
paste(str1,collapse=",")

R 정규표현식

문자열 처리를 쉽고 간단하게 하기 위해서는 정규표현식 사용이 필수입니다. 정규표현식은 약속된 기호들에 의해서 표현됩니다.

정규표현식에서 [] 기호는 대괄호 안의 문자가 한 번만 반복되고 {n}은 n만큼 반복됩니다. 예를들면, [a-z]의 의미는 a에서 z까지 범위 중에서 한 개의 영문 소문자를 의미하며 [a-z]{3}은 영문 소문자가 연속으로 3개 발생한다는 의미입니다.

실습

  • 여러가지 정규표현식을 이용해 문자열을 제어해보자
myStr <- "Hongkd1051,Leess1002,YOU25,홍길동2005"

str_extract_all(myStr,"[a-z]{3}")  # 영문소문자 연속 3문자 추출
str_extract_all(myStr,"[a-z]{3,}") # 영문소문자 연속 3문자 이상 추출
str_extract_all(myStr,"[a-z]{3,5}") # 영문소문자 연속 3~5문자 추출

str_extract_all(myStr,"Hong")  # 해당 문자열 추출

str_extract_all(myStr,"[가-힣]{3}") # 연속된 3개의 한글 문자 추출
str_extract_all(myStr,"[0-9]{4}") # 연속된 4개의 숫자문자 추출

str_extract_all(myStr,"[^a-z]") # 영문 소문자 제외한 나머지 추출
str_extract_all(myStr,"[^가-힣]{5}") # 한글을 제외한 나머지 연속된 5개 추출
str_extract_all(myStr,"[^0-9]{3}") # 숫자를 제외한 나머지 연속된 3개 추출

myId <- "901010-1000432"

str_extract_all(myId,"[0-9]{6}-[1234][0-9]{6}") #주민번호 검사
str_extract_all(myId,"\\d{6}-[1234]\\d{6}")

myStr <- "Hongkd1051,Leess1002,YOU25,홍길동2005"

str_extract_all(myStr,"\\w{6}") # w는 한글,영문자,숫자문자를 포함하지만 특수문자는 제외

End.


이 포스트의 내용은 아래의 책과 사이트를 참조했습니다. 조금 더 자세한 사항을 알고 싶으시면 책을 참조하거나 해당 사이트를 방문하세요!!