[사용 함수]
패키지명 | 함수명 | 설명 |
stringr | str_detect | 해당 단어가 포함된 문자열에 대해 T/F 반환 |
stringr | str_count | 주어진 단어에서 해당 글자가 몇 번 나오는 지 알려줌 |
stringr | str_c | 문자열을 빈 칸 없이 이어붙임 |
stringr | str_dup | 주어진 문자열을 주어진 횟수만큼 반복해서 이어 붙임 |
stringr | str_length | 주어진 문자열의 길이 출력 (몇 글자인지) |
stringr | str_locate | 주어진 문자열에서 특정문자가 처음 및 끝에 나오는 위치 반환 |
stringr | str_replace | 변경 전 문자를 변경 후 문자로 바꿈. |
stringr | str_split | 문자열을 기준에 대해 분리 |
stringr | str_sub | 주어진 문자열에서 지정된 길이만큼 문자를 잘라냄 |
stringr | str_trim | 문자열의 앞과 뒤에 공백이 있을 경우 제거 |
stringr | str_extract | 단어에서 pattern만 뽑아서 pattern에 일치하는 값만 반환 |
[stringr 패키지]
R base보다 문자(text)를 좀더 쉽게 처리하고 작업할 수 있게 도와주는 패키지
regex(정규표현식)을 기본적으로 사용하고 있다.
[str_detect() 함수]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | > ##stringr 패키지 > # regex 정규표현식을 기본적으로 사용하고 있다. > library(stringr) > > # str_detect() 함수 > # 해당 단어가 포함된 문자열에 대해 T/F 반환 > fruits <- c('apple','Apple','banana','pineapple') > str_detect(fruits,"A") #대문자 A가 있는 단어 찾기 [1] FALSE TRUE FALSE FALSE > str_detect(fruits,regex("A")) #원래는 이게 맞음. [1] FALSE TRUE FALSE FALSE > > str_detect(fruits,'^a') #첫 글자가 소문자 a인 단어 찾기 [1] TRUE FALSE FALSE FALSE > str_detect(fruits,'e$') #끝나는 글자가 소문자 e인 단어 찾기 [1] TRUE TRUE FALSE TRUE > str_detect(fruits,'^[aA]') #시작하는 글자가 대문자 A나 소문자 a인 단어 찾기 [1] TRUE TRUE FALSE FALSE > str_detect(fruits,'[aA]') #단어에 소문자 a나 대문자 A가 들어 있는 단어 찾기 [1] TRUE TRUE TRUE TRUE > > str_detect(fruits,regex("a",ignore_case=T)) #대소문자 구분없이 찾기 [1] TRUE TRUE TRUE TRUE > str_detect(fruits,fixed("a",ignore_case=T)) #위와 같은 표현 [1] TRUE TRUE TRUE TRUE > > strings <- c("aaB", "aab","Aba", "ABa") > str_detect(strings, "ab") [1] FALSE TRUE FALSE FALSE > str_detect(strings, regex("ab", ignore_case=T)) #두 개의 문자 이상일때 대소문자 구분없이 찾기 [1] TRUE TRUE TRUE TRUE > str_detect(strings, regex("ab", ignore_case=F)) [1] FALSE TRUE FALSE FALSE > str_detect(strings, regex("ab")) [1] FALSE TRUE FALSE FALSE | cs |
[str_count() 함수]
1 2 3 4 5 6 7 8 | > # str_count() 함수 > # 주어진 단어에서 해당 글자가 몇 번 나오는 지 알려줌 > fruits [1] "apple" "Apple" "banana" "pineapple" > str_count(fruits,'a') [1] 1 0 3 1 > str_count(fruits, fixed("a",ignore_case = T)) # 대소문자 구분 없이 [1] 1 1 3 1 | cs |
[str_c() 함수]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | > # str_c() 함수 > # 문자열 빈칸없이 이어붙임. > str_c("apple","banana") #둘을 빈칸없이 이어붙임. [1] "applebanana" > str_c(fruits) #fruits 반환결과와 같음. [1] "apple" "Apple" "banana" "pineapple" > str_c("Fruits: ",fruits) #순환원리! [1] "Fruits: apple" "Fruits: Apple" "Fruits: banana" [4] "Fruits: pineapple" > str_c(fruits," name is ",fruits) [1] "apple name is apple" "Apple name is Apple" [3] "banana name is banana" "pineapple name is pineapple" > > str_c(fruits,collapse="-") # 문자열 연결시 사이에 들어간 문자 지정 가능 [1] "apple-Apple-banana-pineapple" > str_c(fruits,collapse="") # 벡터의 모든 값들을 빈칸없이 이어붙여 하나의 값으로 만듦. [1] "appleApplebananapineapple" | cs |
[str_dup() 함수]
1 2 3 4 5 6 7 8 | > # str_dup() 함수 > # 주어진 문자열을 주어진 횟수만큼 반복해서 이어 붙임 > # duplicate > str_dup(c("apple","banana"),3) [1] "appleappleapple" "bananabananabanana" > str_dup(fruits,2) [1] "appleapple" "AppleApple" "bananabanana" [4] "pineapplepineapple" | cs |
[str_length() 함수]
1 2 3 4 5 6 7 8 9 10 11 | > # str_length() 함수 > # 주어진 문자열의 길이 출력 (몇 글자인지) > str_length('apple') [1] 5 > str_length(fruits) [1] 5 5 6 9 > > length('apple') # 위와 차이 [1] 1 > length(fruits) # 위와 차이 [1] 4 | cs |
[str_locate() 함수]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | > # str_locate() 함수 > # 주어진 문자열에서 특정문자가 처음 및 끝에 나오는 위치 반환. > str_locate('apple','a') # a문자가 1에서 시작 1에서 끝 start end [1,] 1 1 > fruits [1] "apple" "Apple" "banana" "pineapple" > str_locate(fruits,'a') # banana와 같은 경우 처음 a만 찾아줌 start end [1,] 1 1 [2,] NA NA [3,] 2 2 [4,] 5 5 > str_locate(fruits,'pp') # pp 문자가 2에서 시작 3에서 끝 start end [1,] 2 3 [2,] 2 3 [3,] NA NA [4,] 6 7 > > str_locate_all(fruits,'a') # a의 모든 위치 값 list 반환 [[1]] start end [1,] 1 1 [[2]] start end [[3]] start end [1,] 2 2 [2,] 4 4 [3,] 6 6 [[4]] start end [1,] 5 5 | cs |
[str_replace() 함수]
1 2 3 4 5 6 7 8 | > # str_replace() 함수 > # 변경 전 문자를 변경후 문자로 바꿈. > str_replace('apple','p','*') # 가장 처음 나오는 것만 바꿔줌 [1] "a*ple" > str_replace('apple','p','**') [1] "a**ple" > str_replace_all('apple','p','*') # 문자열의 모든 문자에 적용 [1] "a**le" | cs |
[str_split() 함수]
1 2 3 4 5 6 7 8 | > # str_split() 함수 > # 문자열을 기준에 대해 분리 > fruits <- str_c('apple','/','orange','/','banana') > fruits [1] "apple/orange/banana" > str_split(fruits,"/") # / 기호를 기준으로 분리 [[1]] [1] "apple" "orange" "banana" | cs |
[str_sub() 함수]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | > # str_sub() 함수 > # 주어진 문자열에서 지정된 길이만큼 문자를 잘라냄. > fruits [1] "apple/orange/banana" > str_sub(fruits,start=1,end=3) [1] "app" > str_sub(fruits,start=6,end=9) [1] "/ora" > str_sub(fruits,start=-5) # -는 뒤에서부터 시작 [1] "anana" > > hw <- "Hadley Wickham" > str_sub(hw, 1, 6) [1] "Hadley" > str_sub(hw, end = 6) [1] "Hadley" > str_sub(hw, 8, 14) [1] "Wickham" > str_sub(hw, 8) [1] "Wickham" > str_sub(hw, c(1, 8), c(6, 14)) # 1~6 ,8 ~ 14 까지 [1] "Hadley" "Wickham" > > # Negative indices > str_sub(hw, -1) [1] "m" > str_sub(hw, -7) [1] "Wickham" > str_sub(hw, end = -7) [1] "Hadley W" | cs |
[str_trim() 함수]
1 2 3 4 | > # str_trim() > # 문자열의 앞과 뒤에 공백이 있을 경우 제거 > str_trim(' apple banana berry ') [1] "apple banana berry" | cs |
[str_extract() 함수]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | > # str_extract() 함수 > # 단어에서 pattern만 뽑아서 pattern에 일치하는 값만 반환 > char1 <- c('apple','Apple','APPLE','banana','grape') > str_extract(char1, "pp") [1] "pp" "pp" NA NA NA > str_extract_all(char1, "pp") # 해당하는 pattern만 뽑아서 list로 반환 [[1]] [1] "pp" [[2]] [1] "pp" [[3]] character(0) [[4]] character(0) [[5]] character(0) | cs |
1 2 3 4 5 6 7 8 9 10 11 | > str_extract(c("grey", "gray"), "gre|ay") # gre or ay 추출 [1] "gre" "ay" > str_extract(c("grey", "gray"), "gr(e|a)y") #grey or gray모두 추출 [1] "grey" "gray" > > # Anchors > x <- c("apple", "banana", "pear") > str_extract(x, "^a") [1] "a" NA NA > str_extract(x, "a$") [1] NA "a" NA | cs |
출처 - 경영프로그래밍 강의 자료 (양성병 교수님)
'IT,인터넷 관련 학습 > R언어 학습' 카테고리의 다른 글
[R] 정규표현식(regex) (2) | 2019.05.12 |
---|---|
[R] dplyr 패키지 (0) | 2019.05.12 |
[R] 함수 II (0) | 2019.05.12 |
[R] 함수 I (0) | 2019.05.12 |
[R] 데이터 입력 및 출력 (0) | 2019.05.12 |