Access .txt and .csv, edit data, error statistics

1 view (last 30 days)
Hi guys!
I would appreciate your help on the following:
I have several files (attached you can find two of them) that contain measured (.txt) and simulated (.csv) hourly values for some meteorological variables. I am only interested in temperature and relative humidity. The simulated period run from 01-Jul-2019 to 30-Sep-2019, while for the observations, I have a couple of months more.
What I need to do is open both files for every station (here I attached only "Airport"), access the dates that both files contain data and produce graphs and error metrics.
Any ideas please?

Accepted Answer

Allen
Allen on 26 Jan 2020
A basic method for importing only the Temp and RH data into tables
filename = 'Airport.csv';
opts = detectImportOptions(filename);
opts.SelectedVariableNames = opts.SelectedVariableNames(16:17); % Columns 16 and 17 from .csv are temp and RH
data1 = readtable(filename,opts);
filename = 'Hourly Data Airport 2019.txt';
opts = detectImportOptions(filename);
opts.SelectedVariableNames = opts.SelectedVariableNames(2:3); % Columns 2 and 3 from .csv are temp and RH
data2 = readtable(filename,opts);
  2 Comments
Daphne PARLIARI
Daphne PARLIARI on 26 Jan 2020
Thank you Allen, it worked! I made some alterations but it's great.
Could I do the same but with multiple files? To explain my goal, every station (Airport, Martiou etc) has two respective files (.csv and .txt) in different directories that I must import and do my work (error statistics as I mentioned above).
Is there an efficient way to do that?
Allen
Allen on 27 Jan 2020
You could assign data dynamically to a structure where the *.csv filename is used as the fieldname. This way you use a loop to handle multiple stations.
files = {'Airport.csv','Hourly Data Airport 2019.txt'
'Martiou.csv','Hourly Data Martiou 2019.txt'}; % You may need to add filepaths
for i=1:size(file,1)
[~,fn,~] = fileparts(files{i,1}); % Splits the filename into path, file, extension
fldnm = matlab.lang.makeValidName(fn); % This converts the filename into a valid string to use as a fieldname
CSV.(fldnm).opts = detectImportOptions(file{i,1});
CSV.(fldnm).opts.SelectedVariableNames = CSV.(fldnm).opts.SelectedVariableNames(16:17);
CSV.(fldnm).data = readtable(file{i,1},CSV.(fldnm).opts);
TXT.(fldnm).opts = detectImportOptions(file{i,2});
TXT.(fldnm).opts.SelectedVariableNames = TXT.(fldnm).opts.SelectedVariableNames(2:3);
TXT.(fldnm).data = readtable(file{i,2},TXT.(fldnm).opts);
end

Sign in to comment.

More Answers (0)

Categories

Find more on Large Files and Big Data in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!