Programming/R

문자열 데이터 다루는 방법

🌻Pep🌻 2020. 10. 20. 17:18

R의 내장되어 있는 함수와 stringr 패키지를 활하여 문자열 데이터를 다루는 방법에 대해 알아볼 것이다.

 

□ 문자 이어 붙이기

 

 In:

paste('Rooney', 'Song', sep = '_')
paste0('Rooney', 'Song')

str_c('Rooney', 'Song', sep = '_')

 

Out:

[1] "Rooney_Song"

[1] "RooneySong"

[1] "Rooney_Song"

 

▷ paste, paste0 함수는 두 문자열을 붙여주는 역할을 한다. 두 함수의 차이점은 paste0 함수는 붙일 때, 사이에 문자를 삽입하지 않고, 바로 붙인다는 것이다. paste 함수의 sep 인자를 통해 두 문자열을 붙일 때, 사이에 들어갈 문자를 지정할 수 있다.

 

▷ str_c 함수는 stringr 패키지에 포함된 함수로, paste 함수와 같은 역할을 한다.

 

□ 글자 개수 세기

 

In:

nchar('Rooney')

str_length('Rooney')

 

Out:

[1] 6

[1] 6

 

▷ nchar, str_length 함수를 통해 문자열의 문자 개수를 확인할 수 있다. str_length 함수는 stringr 패키지에 포함된 함수이다.

 

□ 소문자 변환

 

In:

tolower('Rooney')

 

Out:

[1] "rooney"

 

▷ tolower 함수는 문자열에 포함된 모든 문자를 소문자로 변환하여 준다.

 

□ 대문자 변환

 

In:

toupper('Rooney')

 

Out:

[1] "ROONEY"

 

▷ toupper 함수는 문자열에 포함된 모든 문자를 대문자로 변환하여 준다.

 

□ 공백 없애기

 

In:

str_trim(' Rooney Song ')

 

Out:

[1] "Rooney Song"

 

▷ stringr 패키지에 포함된 str_trim 함수는 문자열의 앞과 뒤에 포함된 공백을 제거하여 준다.

 

□ 부분 추출

 

In:

substr('Rooney', 1, 3)

str_sub('Rooney', 1, 3)

 

Out:

[1] "Roo"

[1] "Roo"

 

▷ substr, str_sub 함수는 두 번째 인자 부분을 시작으로 세 번째 인자 부분에 해당하는 부분만 추출하여 준다. str_sub 함수는 stringr 패키지에 포함되어 있다.

 

□ 특정 위치 값 변경

 

In:

char_1 = 'Rooney'
char_2 = 'Song'

substr(char_1, 1, 2) = 'SKY'
print(char_1)

str_sub(char_2, 1, 2) = 'SKY'
print(char_2)

 

Out:

[1] "SKoney"

[1] "SKYng"

 

▷ substr 함수의 추출 범위에 다른 값을 할당하여 해당 범위의 문자를 바꿀 수 있다. 이때, 해당 범위의 길이를 초과하는 문자는 반영되지 않는다. 반면 stringr 패키지에 포함된 str_sub 함수는 추출 범위에 다른 문자열을 할당하여 바꿀 때, 범위의 길이를 초과하는 부분까지 반영된다.

 

□ 특정 패턴 기준으로 자르기

 

In:

strsplit('Rooney Song', ' ')

str_split('Rooney Song', ' ')

str_split('Rooney Song', ' ', simplify = T)

 

Out:

[[1]]
[1] "Rooney" "Song"  

[[1]]
[1] "Rooney" "Song"  

     [,1]     [,2]  
[1,] "Rooney" "Song"

 

▷ strsplit 함수를 통해 두 번째 인자로 주어진 패턴을 기준으로 문자열을 자를 수 있다. stringr 패키지에 포함된 str_split 함수도 같은 역할을 수행한다. 이때, simplify 인자를 True로 설정할 경우, 리스트 형태가 아닌, 행렬 형태로 출력된다.

 

□ 특정 패턴이 포함된 문자열 찾기

 

In:

grep('o', c('Song Kiyoung', 'Pep', 'Joanna'))

grepl('o', c('Song Kiyoung', 'Pep', 'Joanna'))

 

Out:

[1] 1 3

[1]  TRUE FALSE  TRUE

 

▷ grep 함수는 첫 번째 인자에 해당하는 패턴의 위치를 찾아준다. 반면, grepl 함수는 패턴과 일치 여부를 출력한다.

 

□ 특정 패턴을 찾아서 다른 패턴으로 바꾸기

 

In:

sub('o', 'u', 'Rooney')

gsub('o', 'u', 'Rooney')

str_replace('Rooney', 'o', 'u')

str_replace_all('Rooney', 'o', 'u')

 

Out:

[1] "Ruoney"

[1] "Ruuney"

[1] "Ruoney"

[1] "Ruuney"

 

▷ sub 함수는 첫 번째 인자에 해당하는 패턴을 두 번째 인자의 패턴으로 바꾸는 역할을 수행한다. 하지만 이 과정은 한 번 밖에 수행되지 않는다. 즉 가장 먼저 패턴과 일치하는 문자열만 바꾸어 준다. 반면, gsub 함수는 패턴과 일치하는 모든 문자열을 바꾼다.

 

▷ stringr 패키지에 포함된 str_replace, str_replace_all 함수는 sub, gsub 함수의 역할과 일치한다.