본문 바로가기
반영훈/R

[R][저장용][list.files()] 폴더 내 여러파일 자동으로 불러오기

by Banda 2019. 7. 4.

폴더내 여러 파일들을 한번에 불러오고 나아가 하나의 데이터프레임으로 만들기 
(1) 폴더 경로 객체로 만들기 
(2) 폴더 내 파일들 이름을 list-up 하여 객체로 만들기 
(3) 파일 개수 객체로 만들기 
(4) 폴더 내 파일들을 LOOP 돌려서 불러오기 : read.table() 
(5) 파일을 내보내면서 합치기 : write.table(dataset, APPEND = TRUE) 
(6) 데이터프레임으로 불러오기, 칼럼 이름 넣기 : read.table(dataset_all, col.names = c()) 

##Automatically import files in a folder##

#cleansing up environmet
getwd()
rm(list=ls())
#making directory as an object
src_dir <- c("디렉토리")
src_dir
#Objectification of file list in directory
src_file <- list.files(src_dir)
src_file
#Make counting number of files in the directory
src_file_cnt <- length(src_file)
src_file_cnt
#write.table one by one automatiically, using loop program
for(i in 1:src_file_cnt){
  
  dataset <- read.table(
    paste(src_dir, "/", src_file[i], sep=""),
    sep=",", header=F, stringsAsFactors = F) 

# dataset exporting with 'APPEND = TRUE' option, filename = dataset_all.txt
  write.table(dataset,
              paste(src_dir, "/", "dataset_all.txt", sep=""),
              sep = ",",
              row.names = FALSE,
              col.names = FALSE,
              quote = FALSE,
              append = TRUE) # appending dataset (stacking)
  
  #delete seperate datasets
  rm(dataset)
  
  #printing loop sequence at console to check loop status
  print(i)
}


# reading dataset_all with column names
dataset_all_df <- read.table(
  paste(src_dir, "/", "dataset_all.txt", sep=""),
  sep = "\t",
  header = FALSE, # nocolumn name in the dataset
  col.names = c("SICK_SYM", "Freq", "Total", "Per", "Cum_Per"), # input column names
  stringsAsFactor = FALSE,
  na.strings = "NA", fill = TRUE) #missing value : "NA"

 

 

참조:https://rfriend.tistory.com/tag/list.files()

더 자세한 내용:https://stat.ethz.ch/R-manual/R-devel/library/base/html/list.files.html

댓글