R 기초강의(9) - R 문자열 처리
R 강좌는 여러 절로 구성되어 있습니다.
- R 기초강의(1) - R 개요
- R 기초강의(2) - R Operator
- R 기초강의(3) - R Data Type
- R 기초강의(4) - R 패키지와 함수
- R 기초강의(5) - R 자료구조(vector)
- R 기초강의(6) - R 자료구조(matrix)
- R 기초강의(7) - R 자료구조(factor, list)
- R 기초강의(8) - R 자료구조(data frame)
- R 기초강의(9) - R 문자열 처리
- R 기초강의(10) - R 데이터 입출력
- R 기초강의(11) - R 제어문 및 함수
- R 기초강의(12) - R 기초 Exercise
- R 기초강의(13) - R Crawling
- R 기초강의(14) - R 데이터 조작
- R 기초강의(15) - R 데이터 조작 실습
- R 기초강의(16) - R 데이터 정제
- R 기초강의(17) - R 기초 통계 함수
- R 기초강의(18) - R Graph
- R 기초강의(19) - R KoNLP
- R 기초강의(20) - R 연습문제
- R 기초강의(21) - R ggmap
- R 기초강의(22) - 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.
이 포스트의 내용은 아래의 책과 사이트를 참조했습니다. 조금 더 자세한 사항을 알고 싶으시면 책을 참조하거나 해당 사이트를 방문하세요!!