headerが複数階​層のcsvファイルを​構造的に読み込む方法

10 views (last 30 days)
Yutaro Ueoka
Yutaro Ueoka on 14 Oct 2022
Commented: Yutaro Ueoka on 14 Oct 2022
csvファイルをtableかmatrixとしてでもなんでも良いのですが、読み込みたいです。
質問1:csvファイルの構造が下記のような場合、どのようにしたら読み込めますでしょうか?
layer1 A A A A
layer2 a a b b
layer3 x y x y
--- --- --- ----
t1 1 2 4 5
t2 2 3 5 6
t3 3 4 6 7
...
readtableだと、headerをlayer1か2か3のどれかしか選ぶことができず情報が潰れてしまいます。
質問2:layer1,2,3をconcatenateして、A_a_xのようにすることも考えたのですが、それもどのように行えばよいか分かりませんでした。そちらに関しても分かる方がいらしたら教えて頂きたいです。
どうぞよろしくお願いいたします。

Accepted Answer

Akira Agata
Akira Agata on 14 Oct 2022
readcell でまずファイル全体を読み込んだ後、変数名に関する部分と数値データの部分を分けて、最後にテーブル型変数として纏めるという方法はいかがでしょうか?以下はその一例です。
% readcell でとりあえず全体を読み込む
C = readcell("sample.csv");
% 変数名に関する部分と数値データ部分に分ける
C1 = C(1:3, 2:end);
C2 = C(4:end, 2:end);
% 変数名を作成する
varName = join(C1', "_");
% 数値データ部分とあわせてテーブル型変数に整理
T = array2table(cell2mat(C2), "VariableNames", varName)
T = 3×4 table
A_a_x A_a_y A_b_x A_b_y _____ _____ _____ _____ 1 2 4 5 2 3 5 6 3 4 6 7
  1 Comment
Yutaro Ueoka
Yutaro Ueoka on 14 Oct 2022
ありがとうございます!
readcellを知らなかったのですが、教えて頂いた通りでやりたいことができました!!迅速にご回答頂けて大変助かりました。ありがとうございます。

Sign in to comment.

More Answers (0)

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!