티스토리 뷰
[tidyverse] stringr 패키지 사용법 (detect, mutate, manage string)
Gom Guard 2018. 6. 16. 14:06stringr 패키지
문자열은 R의 매력적인 요소는 아니지만 데이터 정리 및 준비 작업에서 큰 역할을 합니다. stringr 패키지는 문자열을 가능한 한 쉽게 처리하도록 설계 함수 세트를 제공합니다. 문자열에 익숙하지 않다면 R 데이터 과학 장의 문자열에 대한 장을 추천합니다.
본 포스트는 rstudio 에서 제공하는 stringr 패키지 cheetsheet 에 나오는 내용을 바탕으로 구성하였습니다.
설치 및 사용법
위에서도 설명했던 것 처럼 stringr 패키지는 tidyverse 패키지의 일부 입니다. 따라서 tidyverse 패키지 전체를 설치하셔도 되고 stringr 패키지만 따로 설치하셔도 됩니다. 이후에 사용할 때도 tidyverse 패키지를 불러와도 되고 stringr 패키지만 불러와도 됩니다.
패턴 찾기
stringr 패키지에서 패턴을 찾는 메소드는 4종류가 있습니다. str_detect, str_count, str_which, str_locate 입니다. 이 메소드들에 포함되는 parameter 중 pattern 은 정규식을 의미합니다.
str_detect 메소드는 string 중에 해당 정규식에 맞는 문자열이 존재하는지를 T,F 로 반환하는 메소드 입니다.
str_count 메소드는 string 중에 해당 정규식에 맞는 문자열이 총 몇개 존재하는지 반환하는 메소드 입니다.
str_which 메소드는 string 중에 해당 정규식에 맞는 문자열이 문자열 벡터 중에서 몇 번째 있는지 반환합니다. 만약 해당 패턴이 없는 경우는 아무것도 반환하지 않습니다. 예시의 그림에서는 4개의 값으로 구성된 벡터 중에 1, 2, 4번째 값에 해당 문자열이 있다는 것을 보여줍니다.
str_locate 메소드는 string 중에 해당 정규식에 맞는 문자열의 시작점과 종료지점을 반환하는 메소드 입니다.
부분집합 찾기
stringr 에서 문자열에서 부분을 반환하는 함수들은 5가지 정도가 있습니다.
str_sub 메소드는 문자열 중 지정된 시작점과 종료지점에 해당하는 문자열을 반환하는 함수입니다.
str_subset 메소드는 string 중에서 해당 패턴을 갖고 있는 문자열들을 반환하는 함수입니다. 다른 메소드 같은 경우는 패턴에 맞는 부분만 반환하지만 str_subset 메소드는 패턴이 있는 문자열 자체들을 반환합니다.
str_extract 와 str_match, str_match_all 메소드는 string 중 해당 패턴을 추출하는 메소드 입니다만 str_extract 와 str_match 간에는 vertor 와 matrix 로 반환한다는 차이점이 있습니다.
또한 str_match 와 str_match_all 함수 간에는 첫 번째 패턴만 찾는지 전체 패턴을 찾는지 차이가 있습니다.
문자열 변형하기
str_sub 메소드는 부분집합 찾기에서 살펴본 메소드 입니다. 그런데 str_sub 메소드를 다음과 같이 사용하면 문자열을 변형할 때 사용할 수 있습니다.
str_sub (fruit, start, end) <- replace . 다른 함수들과 다르게 str_sub 에 값을 지정해주면 원래 변수 자체가 변화해버리니 주의 하셔야합니다.
str_replace 메소드는 string 내에서 지정한 문자열을 찾아 다른 문자열로 변환하는 메소드 입니다. replace 같은 경우는 왼쪽부터 시작해서 처음 보이는 문자를 변경합니다.
str_replace_all 메소드는 str_replace 와 같지만 문자열 전체의 지정문자열을 변경합니다.
str_to_lower, str_to_upper, str_to_title 은 영문자의 대문자 소문자를 변경하는 함수입니다. lower 는 전체 문자를 소문자로, upper 는 전체 문자를 대문자로, title 은 첫문자는 대문자로 나머지는 소문자로 변경하는 함수입니다.
합치고 분할하기
stringr 에서 문자열들을 합치기 위한 메소드는 str_c 와 str_dup 메소드가 있습니다. 이 중 str_c 는 collapse 값에 따라 완전 다른 형태로 사용됩니다.
collapse 는 (공간을 덜 차지하도록) 접다 라는 뜻을 가지고 있습니다. 그래서인지 collapse 값을 NULL 로 했을 경우에는 지정한 문자열들만 하나로 만들지만 collapse 값을 NULL 이 아닌 다른 값으로 지정할 경우에는 모든 행을 하나의 값으로 합치는 결과를 얻을 수 있습니다.
sep 파라메터는 행간이 아닌 여러 지정 문자열을 하나로 만드는 과정에서의 구분자 입니다.
다음처럼 collapse 값에 따라 str_c 는 다른 메소드처럼 사용가능합니다. NULL 일 때는 "a b" 가 4개 있는 것을 반환하지만 collapse 값을 " " 로 지정하면 "a b a b a b a b" 를 반환합니다.
str_split 함수와 str_split_fixed 는 동일한 기능을 수행하지만 반환형식이 다른 메소드 입니다. str_split 은 문자열을 지정패턴을 기준으로 몇개로 split 할지 정하는 메소드입니다.
당연히 n = 1 로 지정해놓으면 분할하지 않습니다. 또한 n 이 너무 커도 그에 맞춰 분할할 수 없습니다.
pear 의 경우 a 를 기준으로 분할하면 pe 와 r 로 분할할 수 있는데 n 을 3 으로 하면 pe 와 r 그리고 "" 을 반환합니다.
길이에 대한 메소드
길이를 다루는 함수는 생각보다 자주 사용합니다. 그 중 가장 기본적인 문자열의 길이를 확인하는 함수는 str_length 입니다. string 의 길이를 반환합니다.
str_pad는 문자열을 지정한 길이에 맞게 만드는 메소드 입니다. pad 에 지정한 값을 side 에 맞춰 길이에 맞게 채워주는 함수 입니다.
str_trunc 는 문자열이 지정한 길이보다 길 경우에 side 에 맞게 ellipsis 로 값을 변환해서 지정한 길이에 맞게 변환하는 함수 입니다. 예를 들어 "banana" 라는 값을 str_trunc("banana",5) 라고 실행해보면 ba... 라는 값을 얻을 수 있습니다. 일단 5개의 길이에 맞게 banan 로 자른 뒤 ellipsis 기본값인 "..." 을 우측에서부터 치환해준 결과입니다.
문자열 순서 다루기
순서를 다루는 메소드는 str_order 과 str_sort 두 가지가 있습니다. str_order 는 순서를 반환하는 메소드이며 sort 는 직접 정렬하는 메소드 입니다.
두 메소드의 parameter 가 같으니 하나씩 살펴보겠습니다.
decreasing 은 내림차순 오름차순을 결정하는 parameter 입니다.
na_list 는 NA 값을 어떻게 할지 결정하는 것입니다. 가장 뒤로 옮길지 말지에 대한 parameter 이지만 변경할 일이 많지 않습니다.
numeric 은 다음 예시를 보며 이해해보겠습니다.
numeric을 T 로 놓으면 숫자 크기대로 정렬하는 것을 확인할 수 있습니다.
하지만 F 로 지정할 경우에는 사전처럼 정렬하는 것을 알 수 있습니다.
2018/06/12 - [R/R Language] - [R 기본] readr 패키지 사용법 (read_csv, write_csv)
2018/06/13 - [R/R Language] - [R 기본] tidyr 패키지 사용법 (split, reshape, combine)
2018/06/20 - [R/R Language] - [R] 꼭 얄아야 할 R 기본 개념 part.1 (help, install.package, getwd, setwd)
2018/06/20 - [R/R Language] - [R] 꼭 얄아야 할 R 기본 개념 part.2 (행렬곱, t, rbind, cbind, seq, rep)
부족한 블로그에 방문해 주셔서 감사합니다.
잘못된 부분이나 질문이 있으시면
댓글로 말씀해주세요.
금방 확인하고 피드백 드리겠습니다.
좋은 하루 되세요. ^^
'R > R Language' 카테고리의 다른 글
[R] na 값 0 으로 대체하기 (3) | 2018.06.19 |
---|---|
[R] Error in match.names(clabs, names(xi)) : 오류 해결법 (3) | 2018.06.19 |
[tidyverse] tidyr 패키지 사용법 (split, reshape, combine) (11) | 2018.06.13 |
[tidyverse] readr 패키지 사용법 (read_csv, write_csv) (3) | 2018.06.12 |
[R 기본] 데이터 구조 - 벡터 (vector) (0) | 2018.05.04 |
- Total
- Today
- Yesterday
- Koreancuisine
- 커플여행
- 반려견캠핑
- 영월캠핑
- 여름휴가추천
- SeoulTravel
- 글램핑
- 가족캠핑
- 카카오
- 여름캠핑
- 캠핑장추천
- 가평캠핑
- 머신러닝
- 서울근교캠핑
- 백준
- 계곡캠핑
- 강원도여행
- bukhansannationalpark
- 여름휴가
- 영월여행
- 파이썬
- 가족여행
- sql
- Oracle
- 강원도캠핑
- 캠핑초보
- 가평여행
- 자연힐링
- 알고리즘
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |