6.5 stringr

자세히 살펴볼 마지막 tidyverse 패키지는 문자열 작업에 도움이 될 것이다. 이 데이터 유형은 단순한 숫자보다 더 복잡할 수 있기 때문에 문자열로 작업하는 것은 까다롭다. stringr에는 패턴 감지, 문자열 분할 그리고 문자열 결합을 돕는 함수들이 포함되어 있다.

stringr 함수는 자체적으로 사용할 수 있지만, filtermutate 등의 dplyr 동사와 함께 사용할 수도 있다. 예를 들어 race 열에 “All”문자 패턴을 포함하는 레코드를 필터링하려면 다음과 같이 필터 동사에 str_detect를 사용한다.

expectancy %>%
filter(str_detect(race, "All"))
## # A tibble: 357 x 5
##     year race      sex        life_expectancy death_rate
##    <dbl> <chr>     <chr>                <dbl>      <dbl>
##  1  1900 All Races Both Sexes            47.3      2518 
##  2  1901 All Races Both Sexes            49.1      2473.
##  3  1902 All Races Both Sexes            51.5      2301.
##  4  1903 All Races Both Sexes            50.5      2379 
##  5  1904 All Races Both Sexes            47.6      2502.
##  6  1905 All Races Both Sexes            48.7      2424.
##  7  1906 All Races Both Sexes            48.7      2399 
##  8  1907 All Races Both Sexes            47.6      2494.
##  9  1908 All Races Both Sexes            51.1      2299.
## 10  1909 All Races Both Sexes            52.1      2249.
## # ... with 347 more rows

str_replace를 사용하여 한 패턴의 문자를 다른 패턴으로 바꿀 수도 있다. race 열의 “All Races” 항목을 “Most Races”로 변경하려면 다음과 같이 하면 된다.

expectancy <- expectancy %>%
              mutate(race = str_replace(race, "All", "Most"))

문자열 작업에 도움이 되는 많은 stringr 함수가 있다. 대부분은 base R 함수와 함께 작동하는 단순히 래퍼이다. stringr의 가치는 주로 일관된 인터페이스를 제공한다는 점이다. 각 함수는 첫 번째 인수로 입력 문자열을 가지므로 magrittr 파이프 연산자와 함께 작동할 수 있다.