[Data Science With R] 6. 파싱(Parsing) (202405)

2023. 3. 31. 22:45·Data Science/Manipulation

1. 파싱함수

  • 문자형 벡터를 입력받아 함수에 알맞은 특수화된 벡터를 반환
  • 파싱 실패시 경고메세지가 반환되며 problems( )로 실패목록과 사유를 확인할 수 있다.
  • 파라미터로 첫번째 인수로 문자형 벡터를 받으며, na 인수를 통해 결측치로 처리할 문자를 지정한다.
parse_logical 문자형 >> 논리형 parse_character 문자형 >> 문자형 (인코딩)
parse_integer 문자형 >> 정수형 parse_factor 문자형 >> 팩터형
parse_double 문자형 >> 수치형(엄격) parse_datetime 문자형 >> 데이트타임형
parse_number 문자형 >> 수치형(유연) parse_date 문자형 >> 날짜형
parse_guess 문자형 >> 추정된 유형 parse_time 문자형 >> 시간형

 

 

2. 숫자파싱 (parse_integer, parse_double, parse_number)

  • 소수점 구분자 (대부분의 나라에서 점(.)을 소수점 구분자로 사용하나 일부나라는 다른 구분자 사용)
    • parse_double(chr_vec, locale=locale(decimal_mark=","))
  • 숫자 외 다른 문자가 섞여있는 경우 숫자만 출력 (주로 통화 및 백분율 데이터로 "12.5%", "10$" 같은 경우)
    • parse_number(chr_vec)
  • 그룹화 문자 (1,000,000처럼 쉽게 읽을 수 있도록 하는 목적)
    • parse_number(chr_vec, locale=locale(grouping_mark=","))

 

 

3. 문자파싱 (parse_character)

  • 컴퓨터가 문자열을 표시하는 방법 : 인코딩(Encoding, 문자를 숫자에 매핑)
  • readr은 표준 인코딩 방식인 UTF-8 사용
  • "UTF-8"이 아닌 다른 인코딩 방법을 사용한 경우
    • 인코딩을 아는 경우 : parse_character(chr_vec, locale=locale(encoding="UTF-8"))
    • 인코딩을 모르는 경우 : guess_encoding(charToRaw(chr_vec))을 사용해 인코딩 유추
    • 참고로 한글의 경우 CP949, UTF-8, EUC-KR을 시도해볼만 합니다.

 

 

4. 팩터파싱 (parse_factor)

  • parse_factor(chr_vec, levels, ordered)로 팩터형(범주형) 데이터로 변환

 

 

5. 날짜파싱 (parse_datetime, parse_date, parse_time)

  • parse_datetime은 "날짜-시간" 데이터를 입력으로 받음 (시간 생략이 자정으로 설정)
    • "날짜-시간"은 "2023-03-31 21:55:33" 또는 "2023-03-31T21:55:33"와 같이 입력
  • parse_date는 "날짜" 데이터를 입력으로 받음
  • parse_time은 "시간" 데이터를 입력으로 받음
  • 날짜 파싱은 파라미터로 format을 가지며 "hms"패키지에서 제공되는 클래스 사용

 

 

6. 파일 파싱

  • readr은 첫 번째 1000행을 읽고 휴리스틱한 방법을 사용해 각 열의 유형을 파악합니다 
    • guess_parser(chr_vec) : chr_vec의 추정한 유형을 반환
    • parse_guess(chr_vec) : 추정된 유형으로 파싱
  • 모든 parse_xyz( )의 함수는 col_xyz( ) 함수를 가지고 있음
    • R 내부에서 문자열을 파싱할 때는 parse_xyz, 외부에서 R 내부로 파일을 불러올때 col_xyz 사용

 

[문제1] 열의 유형을 알고 있어서 추정된 유형으로 파싱하는 것이 아닌 직접 파싱하고 싶을 때

  • read_csv(file, col_types = cols( "변수명1" = col_xyz( ), "변수명2" = col_xyz( ))와 같이 사용

 

[문제2] 처음 1000행이 특수한 경우라 열을 잘못 추정한 경우

  • read_csv(file, guess_max = 9999)로 추정하는 행의 수 조정
  • read_csv(file, col_types = cols(.default = col_character( ) ))와 같이 모든 열을 문자열로 파싱하고 R내부에서 수정
    (참고로 R 내부 객체에 type_convert(df) 함수를 적용하면 각 열에 맞게 추정 된 유형으로 파싱할 수 있다)

 

[문제3] readr로 파싱이 안되는 경우

  • read_lines( )로 데이터를 각 라인을 원소로 하는 문자형 벡터로 읽기
  • read_file( )을 이용해 전체 데이터를 길이가 1인 문자형 벡터로 읽기
저작자표시 비영리 변경금지 (새창열림)

'Data Science > Manipulation' 카테고리의 다른 글

[Data Science With R] 8. 관계형 데이터  (0) 2023.04.01
[Data Science With R] 7. 데이터 변형 with tidyr (202405)  (1) 2023.04.01
[Data Science With R] 5. readr로 파일 읽기 (202503)  (0) 2023.03.31
[Data Science With R] 4. 티블(Tibble) (202406)  (1) 2023.03.30
[Data Science With R] 3. 탐색적 데이터 분석 (Exploratory Data Analysis) (202405)  (0) 2023.03.29
'Data Science/Manipulation' 카테고리의 다른 글
  • [Data Science With R] 8. 관계형 데이터
  • [Data Science With R] 7. 데이터 변형 with tidyr (202405)
  • [Data Science With R] 5. readr로 파일 읽기 (202503)
  • [Data Science With R] 4. 티블(Tibble) (202406)
임파카
임파카
[ML & Statistics] 모바일 버전에서 수식 오류가 있어 PC 환경에서 접속하는 것을 권장합니다.
  • 임파카
    무기의 스탯(Stat)
    임파카
  • 전체
    오늘
    어제
    • Study (149)
      • Data Science (44)
        • Modeling (18)
        • Manipulation (21)
        • Visualization (4)
      • Statistics (59)
        • Mathmetical Statistics (53)
        • Categorical DA (1)
      • Web Programming (17)
      • AI (26)
        • Machine Learning (16)
        • Deep Learning (10)
      • 활동 및 프로젝트 (3)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
임파카
[Data Science With R] 6. 파싱(Parsing) (202405)
상단으로

티스토리툴바