1. 데이터 분석을 위한 디렉토리 설정하기
데이터 분석을 하려면 분석에 필요한 데이터를 불러오는 것이 필수적입니다.
이때, 데이터를 불러오기 전에 먼저 현재 작업 환경(작업 디렉터리)을 확인하거나 변경하는 작업이 필요합니다.
📌 현재 작업환경(디렉터리) 확인하기
현재 어떤 폴더에서 작업하고 있는지 알고 싶다면 getwd() 함수를 사용하면 됩니다.
getwd() # 현재 작업 디렉터리 경로 출력
📌 작업환경(디렉터리) 변경하기
작업하는 디렉터리를 변경하려면 setwd() 함수를 사용하면 됩니다. 이때, 절대경로 또는 상대경로 모두 사용할 수 있습니다.
- 절대경로: 전체 경로를 명시 (예시: "C:/Users/user/Desktop/project")
- 상대경로:
- "~" : 사용자의 홈 디렉터리
- "." : 현재 디렉터리
- ".." : 상위 디렉터리
setwd("C:/Users/user/Desktop/project") # 절대경로
setwd("../project") # 상대경로 (상위 디렉터리에서 project로 이동)
📌 디렉터리 내의 파일 목록 확인하기
특정 폴더 안에 어떤 파일이나 하위 디렉터리들이 있는지 알고 싶다면, 다음과 같은 함수들을 사용하면 쉽게 확인할 수 있습니다.
- 파일 목록 확인하기: list.files(patterns, full.names)
list.files(pattern=".+\\.csv") # 현재 디렉터리의 파일 중 ".csv"로 끝나는 파일 목록 출력
- 하위 디렉터리 목록 확인하기: list.dirs()
list.dirs() # 현재 디렉터리의 하위 디렉터리 목록 출력
📌 RStudio 사용자라면?
RStudio 환경에서는 화면 우측 하단의 Files 탭을 클릭하여 쉽게 작업 디렉터리와 파일 목록을 확인할 수 있습니다. 디렉터리 경로를 클릭하여 직관적으로 이동하거나 확인하는 것이 가능합니다.
2. 주요 readr 함수
R의 readr 패키지는 데이터를 손쉽게 불러오는 다양한 함수를 제공합니다. 파일의 형식과 구분자에 따라 적절한 함수를 선택하여 사용할 수 있습니다.
함수명 | 설명 |
read_csv | 쉼표(,)로 구분된 CSV 파일 |
read_csv2 | 세미콜론(;)으로 구분된 CSV 파일 |
read_tsv | 탭(Tab)으로 구분된 파일 |
read_table | 공백으로 구분된 파일 |
read_delim | 임의의 구분자(delimiter)로 구분된 파일 |
read_fwf | 고정 너비 파일 |
read_lines | 파일을 한 줄씩 읽어 여러 개의 벡터로 반환 |
read_file | 파일 전체를 하나의 긴 문자열로 읽기 (인코딩 문제나 파일 읽기 오류에 유용) |
가장 많이 사용하는 함수 중 하나인 read_csv는 아래와 같이 사용할 수 있습니다.
df <- read_csv("data.csv") # 현재 디렉토리에 있는 data.csv 파일을 로드
3. read_csv 함수의 주요 파라미터 정리
R의 readr 패키지에서 가장 많이 사용하는 함수인 read_csv()의 주요 파라미터를 정리하여 설명합니다.
read_csv(
file,
col_names = TRUE,
col_types = NULL,
col_select = NULL,
id = NULL,
locale = default_locale(),
na = c("", "NA"),
quoted_na = TRUE,
quote = "\"",
comment = "",
trim_ws = TRUE,
skip = 0,
n_max = Inf,
guess_max = min(1000, n_max),
name_repair = "unique",
num_threads = readr_threads(),
progress = show_progress(),
show_col_types = should_show_types(),
skip_empty_rows = TRUE,
lazy = should_read_lazy()
)
- file : 파일의 경로와 파일명을 지정
- file.choose 함수로 컴퓨터 파일을 직접 선택하거나 clipboard 함수로 클립보드에 있는 값을 사용할 수 있음
- .gz, .bz2, .xz, .zip로 된 파일은 자동으로 압축 해제함
- http 또는 https로 시작하면 해당 서버에서 데이터를 다운로드하여 읽음
- skip : 처음 몇 줄을 건너뛰고 읽을지 결정 (기본값 0)
- quote : 문자열을 감싸는 문자 지정 (기본값 "\"")
- comment : 지정된 문자로 시작하는 줄 무시 (기본값 : "")
- col_names : 열(변수)명 관련 파라미터
- col_names = T : 첫 행을 열 이름으로 사용 (default)
- col_names = F : 첫 행을 열 이름으로 사용하지 않고 X1, X2, X3, ... 와 같이 자동 열 이름 생성
- col_names = 문자벡터 : 열 이름을 직접 입력하여 사용
- col_type : 열의 타입을 지정하는 파라미터
- NULL : 모든 열의 유형을 자동으로 추론 (default)
- list( ), cols( ) : 각 열의 유형을 지정 (일부의 열만 지정하고 싶으면 cols_only 함수 사용)
- 문자열 : 열 순서대로 각 문자가 의미하는 유형으로 지정
- c = character / i = integer / n = number / d = double / l = logical / f = factor
- D = date / T = date time / t = time / ? = guess / - = skip
- col_select : 결과에 포함할 변수를 지정할 수 있으며 dplyr::select와 유사한 역할을 수행한다.
- na : 결측값으로 처리할 문자 지정
- n_max : 파일에서 읽을 최대 줄의 수
- guess_max : 열의 유형을 추측하기 위해서 확인할 행의 수 (col_type과 연관)
- progress : 진행 상황을 표시하는 바 (대규모 데이터 셋이면 data.table::fread를 사용)
[+ 여러 파일을 한번에 읽는 방법 ]
여러 개의 파일이 동일한 형식을 가지고 있을 때는 개별적으로 파일을 읽지 않고, 벡터를 활용하여 한 번에 읽을 수 있습니다.
# Code from R for data science 2/e
sales_files <- c(
"https://pos.it/r4ds-01-sales",
"https://pos.it/r4ds-02-sales",
"https://pos.it/r4ds-03-sales")
read_csv(sales_files, id = "file")
위 코드에서 id = "file" 옵션을 사용하면, 각 행이 어느 파일에서 읽혀왔는지 파일명을 별도의 열로 표시해줍니다.
4. base::read.csv와 readr::read_csv의 차이
- read_csv가 베이스 함수보다 10배 이상 빠르다 (단, data.table::fread가 훨씬 빠름)
- read_csv는 티블(tibble), 베이스 함수는 데이터프레임(dataframe)으로 제공
- read_csv가 베이스함수보다 재현성이 좋다
5. readr 유용한 함수
- format_csv : write_csv의 결과와 동일하지만 디스크에 저장하는 것이 아닌 문자열로 반환
- tokenize : 파일이나 문자열 토큰화 (토크나이저에 따른 문자열 분리 및 리스트 반환)
- type_convert : 문자형 열을 가진 데이터 프레임 객체를 자동으로 변환
'Data Science > Manipulation' 카테고리의 다른 글
[Data Science With R] 7. 데이터 변형 with tidyr (202405) (1) | 2023.04.01 |
---|---|
[Data Science With R] 6. 파싱(Parsing) (202405) (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 With R] 2. 데이터 변형 (202405) (1) | 2023.03.29 |