複数のCSVファイルのインポート

조회 수: 18 (최근 30일)
海
2022년 10월 13일
답변: Atsushi Ueno 2022년 10월 15일
複数のCSVファイルのインポートを行いたいのですが、以下のプログラミングを行っても上手くいきません、改善点を教えていただきたいです。ちなみにファイル名はd_1.csv ,d_2.csv ,d_3.csv.........となっています。
P = 'relative/absolute path to the folder where the files are saved';
S = dir(fullfile(P,'*.csv'));
for k = 1:numel(S)
F = fullfile(P,S(k).name);
S(k).data = csvread(F);
end

채택된 답변

Atsushi Ueno
Atsushi Ueno 2022년 10월 15일
どんなファイルの内容か分からないと明確な回答は出来ませんが:
タイトル行(項目名など)が含まれると読み込みに失敗します。オフセットを指定する必要があります。
M = csvread(filename,R1,C1) は、
行のオフセット R1 および列のオフセット C1 からファイルのデータの読み取りを開始します。
たとえば、オフセット R1=0 および C1=0 はファイルの最初の値を示します。
P = pwd; % ここではカレントフォルダで作業します
S = dir(fullfile(P,'*.csv'));
for k = 1:numel(S)
F = fullfile(P,S(k).name)
S(k).data = csvread(F,1,0); % 行のオフセット=1、列のオフセット0 からファイルのデータの読み取りを開始
end
F = '/users/mss.system.ynUYNY/d_1.csv'
F = '/users/mss.system.ynUYNY/d_2.csv'
F = '/users/mss.system.ynUYNY/d_3.csv'
S(3).data' % 上手く読み込めた
ans = 2×11
0 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
S(3).data = csvread(F); % オフセット指定が無いと読み取りに失敗する
Error using dlmread
Unable to parse a "Numeric" field when reading row 1, field 1.
Actual Text: "d_3_1,d_3_2"
Expected: A number or literal "NaN", "Inf". (possibly signed, case insensitive)

Error in csvread (line 53)
m=dlmread(filename, ',', r, c); %#ok<*DLMRD>

추가 답변 (1개)

Atsushi Ueno
Atsushi Ueno 2022년 10월 15일
>csvread は推奨されません。代わりに readmatrix を使用してください。
P = pwd; % ここではカレントフォルダで作業します
S = dir(fullfile(P,'*.csv'));
for k = 1:numel(S)
F = fullfile(P,S(k).name);
S(k).data = readmatrix(F); % 項目欄を判別してくれるのでオフセットの指定は不要
end
S(3).data' % 上手く読み込めた
ans = 2×11
0 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!