해당 포스트에서는 R을 이용해 대상 폴더에 들어있는 특정 확장자 파일을 불러오는 방법을 소개합니다.
INTRO
아래 내용은 .csv
또는 .txt
와 같은 지정된 파일 확장자를 가진 파일을 읽기 위한 기본 R 코드를 소개합니다. 소개하는 R 코드는 간단하지만 수동으로 읽기에 너무 많은 파일이 있는 경우에 매우 유용합니다.
폴더 내 모든 csv, txt 파일 불러오기
.csv
파일 또는 다른 타입의 파일들이 너무 많이 있는 경우, 이러한 파일을 수동으로 하나씩 읽는 것은 불가능하거나 매우 비효율적입니다.
예를 들어, 대상 디렉토리에 다음과 같은 6개의 파일이 있다고 가정합니다. 처음 4개 파일(csv, CSV, txt, TXT)이 우리가 읽으려는 파일이라면, 파일 내용을 신경쓰지 않아도 되는 지금으로는 간단하게 처리 가능합니다.
- USD.CSV
- EUR.csv
- CNY.TXT
- AUD.txt
- CNY2.ttxt
- USD.CCSV
이 경우 R의 list.files()
함수를 사용하여 특정 파일 확장자를 가진 파일들을 읽을 수 있습니다.
list.files() 함수
list.files()
는 주어진 패턴으로 파일 이름 목록을 반환하는 R 내장 함수입니다.
- R 코드 예시
list.files(path, pattern="\\.(csv|txt)$",
ignore.case = TRUE, full.names = FALSE)
위의 R 명령어에서 "\\.(csv|txt)$"
패턴은 1) 파일명 끝에 적용($
), 2) csv 또는 txt 파일과 같은 다중 파일 확장자((csv| txt)
)는 허용되지만 ccsv 또는 ttxt(\\.
)와 같은 유사한 확장자는 허용되지 않습니다. 대소문자 구분이 무시되므로 csv 및 CSV 또는 txt 및 TXT가 허용됩니다(ignore.case = TRUE
).
R 코드
위에서 소개한 list.files()
함수와 반복문을 함께 사용하면 폴더 내 특정 파일 리스트를 추출하는 문제를 쉽게 풀어낼 수 있습니다.
아래 다음 R 코드는 1) 각 csv(CSV) 또는 txt(TXT) 파일을 읽어 각 data.frame을 별도로 만들고, 2) 해당 데이터를 읽어와 하나의 data.frame으로 저장합니다.
#========================================================#
# Quantitative ALM, Financial Econometrics & Derivatives
# ML/DL using R, Python, Tensorflow by Sang-Heon Lee
#
# https://kiandlee.blogspot.com
#——————————————————–#
# Basic R : read all csv files when these are so many
#========================================================#
graphics.off() # clear all graphs
rm(list = ls()) # remove all files from your workspace
# working directory
setwd(“D:/SHLEE/blog/R/many_csv”)
# directory where csv files are located
path<– file.path(getwd())
#——————————————————-
# make a list of all file names with csv or txt ext.
#——————————————————-
# $ : end of file name
# (csv|txt) : multiple file extentions
# \\. : avoid unwanted cases such as .ccsv
#——————————————————-
v.filename <– list.files(path, pattern=“\\.(csv|txt)$”,
ignore.case = TRUE,
full.names = FALSE)
#——————————————————-
# Test 1) read and make each data.frame
#——————————————————-
for(fn in v.filename) {
df.each = read.csv(fn)
print(fn); print(df.each)
}
#——————————————————-
# Test 2) read and collect into one data.frame
#——————————————————-
df.all = do.call(rbind, lapply(v.filename,
function(x) read.csv(x)))
print(df.all)
출력 결과
우리는 출력 결과를 통해 올바른 파일 확장자를 가진 4개의 파일은 정상적으로 읽어왔지만 2개의 원치 않는 파일(.CCSV 및 .ttxt)은 제외되었다는 것을 확인할 수 있습니다.
위에서 소개드린 R 코드는 특히 읽을 파일이 너무 많을 때 효율적이고 유용합니다.
관련 링크
[1] [R-BLOGGERS] Basic R : Read so many CSV files
도움이 되셨다면 💗공감 꾸욱 눌러주세요! 😊
'programming' 카테고리의 다른 글
R에서 문자열 조작하기 (String Manipulation in R) (0) | 2022.03.04 |
---|---|
R에서 사용하는 숫자 데이터 타입 (0) | 2021.11.29 |
R에서 날짜 데이터 다루기 (Date Formats in R) (0) | 2021.08.28 |