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

12 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)

Categories

Find more on データのインポートと解析 in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!