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

複数の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

 Accepted Answer

Atsushi Ueno
Atsushi Ueno on 15 Oct 2022
どんなファイルの内容か分からないと明確な回答は出来ませんが:
タイトル行(項目名など)が含まれると読み込みに失敗します。オフセットを指定する必要があります。
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>

More Answers (1)

Atsushi Ueno
Atsushi Ueno on 15 Oct 2022
>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

Products

Release

R2020b

Asked:

海
on 13 Oct 2022

Answered:

on 15 Oct 2022

Community Treasure Hunt

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

Start Hunting!