문자열 데이터 다루는 방법
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 함수의 역할과 일치한다.