How to read csv file with asterix
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello,
The NOAA csv data file has the following format (showing only the first 5 rows):
USAF WBAN YR--MODAHRMN DIR SPD GUS CLG SKC L M H VSB WW WW WW W TEMP DEWP SLP ALT STP MAX MIN PCP01 PCP06 PCP24 PCPXX SD
037683 ***** 201001010020 010 10 *** 34 BKN * * * 7.0 ** ** ** * 36 30 ****** 29.56 ****** *** *** ***** ***** ***** ***** **
037683 ***** 201001010050 010 9 *** *** SCT * * * 7.0 ** ** ** * 36 30 ****** 29.56 ****** *** *** ***** ***** ***** ***** **
037683 ***** 201001010120 020 9 *** 722 SCT * * * 7.0 ** ** ** * 36 30 ****** 29.56 ****** *** *** ***** ***** ***** ***** **
037683 ***** 201001010150 360 9 *** 30 OVC * * * 7.0 ** ** ** * 36 30 ****** 29.56 ****** *** *** ***** ***** ***** ***** **
This one has 28 columns (but it can vary). It has all mixed - for example, the column 'CLG' has values [34, *, 722, 30, ...]. How to extract a particular column, and yet be able to skip the row containing the asterix data? One entire row can be asterix - which would mean that no data is available for that particular day. If the index of the skipped row containing asterix is known, that would be beneficial.
Thanks.
0 comentarios
Respuesta aceptada
dpb
el 1 de Mayo de 2014
Actually, it's not too bad...
>> fid=fopen('noaa.csv','r');
>> l=fgetl(fid); % the header
>> toks=tokens(l);ntok=length(toks); % how many columns?
>> c=textscan(fid,repmat('%s',1,ntok),'collectoutput',true) % read that many as strings
c =
{4x28 cell}
>> fid=fclose(fid);
Now begin to do something w/ the data...
>> [~,iclg]=intersect(toks,'CLG','rows') % find a particular variable location
iclg =
7
>> clg=str2double(c{1}(:,iclg)) % convert to numeric
clg =
34
NaN
722
30
>>
find(isnan())
will return locations of missing for however you wish to deal with them.
This is one place where the cell array helps, for sure...
5 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre String Parsing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!