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 |