필터 지우기
필터 지우기

How to import multiple csv files into one and read it from certain folder?

조회 수: 29 (최근 30일)
I am a newbie in matlab programming. I have a problem in coding to import multiple csv files into one from certain folder:
myDir = uigetdir; %gets directory
myFiles = dir(fullfile(myDir,'*.csv'); %gets all csv files in struct
That is the code. But it only shows the name of csv files, not read the content of the data. Could you please help me to find the code to read all the csv files into one file?
Thank you very much for your help
  댓글 수: 1
Anil Kumar
Anil Kumar 2019년 2월 18일
Did you finally solved this task of importing?
Could you please share your knowledge of how did you that before?

댓글을 달려면 로그인하십시오.

채택된 답변

Jeremy Hughes
Jeremy Hughes 2017년 10월 20일
You can use tabularTextDatatstore to collect the CSV files and read them into one table
>> ds = tabularTextDatastore(filepath,'FileExtensions','.csv')
>> T = readall(ds)
Or if the data is too big, read "chunks"
while hasdata(ds)
T = read(ds);
end
  댓글 수: 3
Adhi Ariawan
Adhi Ariawan 2017년 11월 23일
편집: Adhi Ariawan 2017년 11월 23일
Hi Jeremy, for filepath inside the function, I should change that to the csv directory I'm trying to import right? Do I need to put quotation mark for the path?
I'm trying to run this code but it gives me error.
ds = tabularTextDatastore(
'E:\\Matlab\Project1','FileExtensions','.csv','SelectedVariableNames',{'date','win','team','opposing_team'});
T = read(ds)
Daniel Pare
Daniel Pare 2020년 6월 25일
That command works great for me. I was able to import 98 csv files into one big table for my project.
In the command :
ds = tabularTextDatastore(filepath,'FileExtensions','.csv')
the parameter (filepath) was somthing like 'C:\project_data\imported_data_*'
Where the files name are : imported_data_01.csv to imported_data_99.csv
You can also look at all the list od the files importes by doing:
ds.Files

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

KL
KL 2017년 10월 20일
편집: KL 2017년 10월 20일
You're only getting the list of files in the folder. You need to import them using csvread
For example,
fileNames = {myfiles.name};
for k = 1:numel(fileNames)
data{k} = csvread(fileNames{k});
%%do whatever you want
end
Handling with multiple files is discussed extensively already. Just look it up on this forum. Here are some obvious links.
  댓글 수: 5
KL
KL 2017년 10월 20일
Well, just trying out random things without knowing how it actually works will hardly be productive. It's not that hard.
fileNames = {myFiles.name}; %previously it was myfiles
my code was just an example! myFiles is the variable name you use in your two lines of code. ANd that line of code extract only the filenames from the myFiles struct.
Then I have a for loop to iterate through each file, import them and store it in a variable.
data{k} = csvread(fileNames{k});
The above line is the one that reads each csv file and stores the contents in a variable called data. Once the for loop is finished, all your data will be inside this variable called data. Later you can use this variable to create a new csv file, i.e, that contain all the "merged data".
just try and import 1 csv file first! Read the links I gave you.
Kasih Ditaningtyas Sari Pratiwi
Kasih Ditaningtyas Sari Pratiwi 2017년 10월 20일
I got an error :(. I have read the information you've given but I got something like the image I attached. I really have no idea about how to import this file :((((

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Debugging and Analysis에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by