0

次のようなファイルがあります。

RD|Action Code|State Code|County Code|Site ID|Parameter|POC|Sample Duration|Unit|Method|Date|Start Time|Sample Value|Null Data Code|Sampling Frequency|Monitor Protocol (MP) ID|Qualifier - 1|Qualifier - 2|Qualifier - 3|Qualifier - 4|Qualifier - 5|Qualifier - 6|Qualifier - 7|Qualifier - 8|Qualifier - 9|Qualifier - 10|Alternate Method Detectable Limit|Uncertainty
RC|Action Code|State Code|County Code|Site ID|Parameter|POC|Unit|Method|Year|Period|Number of Samples|Composite Type|Sample Value|Monitor Protocol (MP) ID|Qualifier - 1|Qualifier - 2|Qualifier - 3|Qualifier - 4|Qualifier - 5|Qualifier - 6|Qualifier - 7|Qualifier - 8|Qualifier - 9|Qualifier - 10|Alternate Method Detectable Limit|Uncertainty
RD|I|01|101|1002|88501|3|1|105|733|20130101|00:00|11.1|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130101|01:00|16.7|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130101|02:00|17.7|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130101|03:00|15.7|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130122|10:00||BJ||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130122|11:00|6.5|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130122|12:00|6.3|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130122|13:00|0|||||||||||||||
RD|I|01|101|1002|88501|3|1|105|733|20130122|14:00|-0.2|||||||||||||||

ファイルはさらに長く続きますが、一般的な考え方は、ヘッダーが 2 行あり、データが '|' で区切られているということです。

ヘッダー行をスキップしようとしましたが、うまくいきませんでした。ヘッダーが削除されたときにファイルの残りの部分を読み込むために、次のスクリプトを試しました。最初の行の最初の 2 列は機能しましたが、残りは空でした。

ヘッダーをスキップしてデータのすべての行を読み取るには、コードをどのように編集すればよいですか? %d 個のパーツが正しくないと確信しています。

fid = fopen('file.txt','rt');
data = textscan(fid, '%s%s|%s|%d%d|%d|%d|%d|%d|%d|%d|%d|%d:%d|%f|%s||||||||||||||', 'HeaderLines', 4, 'Delimiter', '|');
fclose(fid);

% Divide data and save into variable
[RD,Action_Code,State_Code,County_Code,Site_ID,Parameter,POC,Sample_Duration,Unit,Method,Date,Start_Time,Sample_Value,Null_Data_Code,Sampling_Frequency,Monitor_Protocol_MP_ID,Qualifier_1,Qualifier_2,Qualifier_3,Qualifier_4,Qualifier_5,Qualifier_6,Qualifier_7,Qualifier_8,Qualifier_9,Qualifier_10,Alternate_Method_Detectable_Limit,Uncertainty] = deal(data{:});
4

1 に答える 1

2

このようなものが欲しいと思います。

それらの最後の列は常に空白になりますか? いいえと仮定して、フォーマット文字列に入れました。

textscan各行を提供した後のデータの操作を省略しましたが、それは簡単なはずです。

fid = fopen('test.txt','rt');
format='%s %s %d %d %d %d %d %d %d %d %d %d:%d %f %s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d';
data=textscan(fid,format,'HeaderLines',2,'Delimiter','|','EmptyValue',0);
fclose(fid);
于 2013-09-20T23:07:47.753 に答える