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

1 Ansicht (letzte 30 Tage)
Daphne PARLIARI
Daphne PARLIARI am 25 Jan. 2020
Kommentiert: Allen am 27 Jan. 2020
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?

Akzeptierte Antwort

Allen
Allen am 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 Kommentare
Daphne PARLIARI
Daphne PARLIARI am 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 am 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Large Files and Big Data finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by