Rstudio(3-2) 문자열 처리, 정규식표현

hyukstory 혁스토리·2020년 8월 22일
0

Rstudio

목록 보기
5/16

3-8) 문자열 처리

stringr 패키지

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

str_replace() : 처음 찾은 값 대체

txt4 <- c("aa.txt", "Aaaa.txt", "ab.txt", "123.txt", "ba123.txt", "abab", "ABAB", "aAbB")
str_replace(txt4, 'a', 'z') # 처음 찾은 a를 z로 대체

str_replace_all() : 모든 값 대체

str_replace_all(txt4, 'a', 'z')

정규 표현식

grep() : 주어진 조건만 골라내는 함수

grep("찾을 내용", data, 옵션)

^ : 시작문자지정

[^] : 제외문자지정

[ ] : 포함하는 값 출력

grep_ex <- c("aaa", "bbb","abab", "baba", "ab123", "ba123", "123ab", "ABAB", "aAbB",
             "cad", "dab")

grep("^a", grep_ex)                 # a로 시작되는 위치 출력
grep("^a", grep_ex, value = T)      # a로 시작되는 값 출력
grep("^ab", grep_ex, value = T)     # ab로 시작되는 값 출력
grep("^ba", grep_ex, value = T)     # ba로 시작되는 값 출력
grep("[ab]", grep_ex, value = T)    # a 또는 b를 포함하는 값 출력
grep("^[ab]", grep_ex, value = T)   # a 또는 b로 시작되는 값 출력
grep("[^a]", grep_ex, value = T)    # a 만으로 구성된 값 제외하고 출력
grep("[^ab]", grep_ex, value = T)   # a 또는 b만으로 구성된 값 제외하고 출력
grep("^[^a]", grep_ex, value = T)   # a로 시작되는 값 제외하고 출력
grep("^[^ab]", grep_ex, value = T)  # a 또는 b로 시작되는 값 제외하고 출력 
grep("[0-9]", grep_ex, value = T)   # 0~9 숫자가 포함된 값 출력
grep("^[0-9]", grep_ex, value = T)  # 0~9 숫자로 시작되는 값 출력
grep("^[^0-9]", grep_ex, value = T) # 0~9 숫자로 시작되는 값 제외하고 출력
data <- c("Game", "GAME", "ggame", "gAME", "Tetris1", "game", "tetris5")

grep("^g+", data, value = T) # ^ 시작, +1회 이상
grep("G+", data, value = T)  # G가 최소 1회 나오는 값
grep("ME$", data, value = T) # Me로 끝나는 값
grep("[2-5]", data, value = T) # 2~5 사이 숫자 포함하는 값
grep("[[:digit:]]", data, value = T) # 숫자 포함하는 값
grep("[[:upper:]]", data, value = T) # 대문자 포함하는 값

nchar : 글자 수 체크

nchar_ex1 <- "매일 매일 기다려"
nchar(nchar_ex1)

nchar_ex2 <- c("a.txt", "A.txt", "ab.txt", "123.txt", "b   a123.txt")
nchar(nchar_ex2)

paste() : 붙이기

paste(1,2,3)
paste("a", "b", "c")
paste("a", "b", "c", sep='') #공백제외
paste("a", "b", "c", sep='-')

collapse="|": 정규표현식 두번 쓸 때

ptn <- c("^a", "^A")
grep(ptn, grep_ex, value=T) # 정규표현식이 두번 써지면 오류 발생
# 오류 없애기 위해선 paste(정규표현식, collapse="|")
grep(paste(ptn, collapse="|"), grep_ex, value=T)
# = grep("^a|^A", grep_ex, value=T)

substr

substr("8794564312",3,6) #3번째에서 6번째까지 가져오기

jumin <- "900405-1231415"
substr(jumin, 8,8) # 주민 번호에서 성별 번호

strsplit("x") : X 기준으로 분리

tel <- "031)123-4567"
strsplit( tel, ")"
```)



profile
문돌이의 고군분투 개발 공부

0개의 댓글