[사용 함수]

패키지명

함수명

설명

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')  
[11 0 3 1
> str_count(fruits, fixed("a",ignore_case = T)) # 대소문자 구분 없이 
[11 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')  
[15
> str_length(fruits) 
[15 5 6 9
> 
> length('apple') # 위와 차이
[11
> length(fruits) # 위와 차이
[14
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, 16)
[1"Hadley"
> str_sub(hw, end = 6)
[1"Hadley"
> str_sub(hw, 814)
[1"Wickham"
> str_sub(hw, 8)
[1"Wickham"
> str_sub(hw, c(18), c(614)) # 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

+ Recent posts