R에서 구분기호나 통화기호 없애기

가끔 천단위 구분기호나 통화기호(원, $, USD)가 데이터 내에 포함되어 있는 경우가 있습니다. 그리고 이런경우 R은 이를 여지없이 character 형으로 인식을 하게 됩니다.

library(tibble)

example <- tribble(
  ~name, ~debt, ~year,
  "철수", "1,000원", "2019년",
  "영희", "2,000냥", "2018년",
  "개똥이", "엄청 오래전 3,000원 나한테 빚짐", "1990년"
)

example
## # A tibble: 3 x 3
##   name   debt                            year
##   <chr>  <chr>                           <chr>
## 1 철수   1,000원                         2019년
## 2 영희   2,000냥                         2018년
## 3 개똥이 엄청 오래전 3,000원 나한테 빚짐 1990년
str(example)
## Classes 'tbl_df', 'tbl' and 'data.frame':    3 obs. of  3 variables:
##  $ name: chr  "철수" "영희" "개똥이"
##  $ debt: chr  "1,000원" "2,000냥" "엄청 오래전 3,000원 나한테 빚짐"
##  $ year: chr  "2019년" "2018년" "1990년"

readr 패키지의 parse_number() 함수를 이용해 문자형을 수치형으로

readr 패키지에는 parse_* 함수들이 있는데, 그중 parse_number() 함수를 이용하면 숫자 앞뒤의 비수치 문자를 무시하고, 위와같은 데이터들을 손쉽게 수치형으로 바꿀 수 있습니다.

library(readr)

example$debt <- readr::parse_number(example$debt)
example$year <- readr::parse_number(example$year)

example
## # A tibble: 3 x 3
##   name    debt  year
##   <chr>  <dbl> <dbl>
## 1 철수    1000  2019
## 2 영희    2000  2018
## 3 개똥이  3000  1990
sum(example$debt)
## [1] 6000