다른사람들에게 데이터를 받아서 일하게 되는 경우 대부분 R에 사용하기에 적합한 형태로 되어 있지 않은 경우가 많습니다. 열의 이름이 숫자로 시작한다거나 띄어쓰기가 되어 있다던가 특수문자가 들어있다던가 셀이 병합되어 있다던가 하는 경우입니다.

이런 dirty data를 clean하게 만들어주는 패키지가 있습니다. 바로 janitor 패키지입니다. janitor는 청소부란 뜻을 가지고 있습니다. 이 패키지와 함께 더러운 파일을 청소해봅시다.

# install.package("janitor")
# OR
# devtools::install_github("sfirke/janitor")

library(janitor)

더러운 데이터 청소하기

패키지 저자가 제공하는 dirty_data.xlsx를 예제로 사용하겠습니다.

견적은 다음과 같습니다.

  • 더러운 열이름
  • 엑셀 형식이지만 데이터가 없음
  • 숫자 형식으로 저장된 날짜
  • “Certification”이라는 열이 3개나 있음

한번 읽어들여 보겠습니다.

roster_raw <- readxl::read_excel("dirty_data.xlsx")
str(roster_raw)
## Classes 'tbl_df', 'tbl' and 'data.frame':    13 obs. of  11 variables:
##  $ First Name       : chr  "Jason" "Jason" "Alicia" "Ada" ...
##  $ Last Name        : chr  "Bourne" "Bourne" "Keys" "Lovelace" ...
##  $ Employee Status  : chr  "Teacher" "Teacher" "Teacher" "Teacher" ...
##  $ Subject          : chr  "PE" "Drafting" "Music" NA ...
##  $ Hire Date        : num  39690 39690 37118 27515 41431 ...
##  $ % Allocated      : num  0.75 0.25 1 1 1 0.5 0.5 NA 0.5 0.5 ...
##  $ Full time?       : chr  "Yes" "Yes" "Yes" "Yes" ...
##  $ do not edit! --->: logi  NA NA NA NA NA NA ...
##  $ Certification    : chr  "Physical ed" "Physical ed" "Instr. music" "PENDING" ...
##  $ Certification__1 : chr  "Theater" "Theater" "Vocal music" "Computers" ...
##  $ Certification__2 : logi  NA NA NA NA NA NA ...