一つのCSVファイルのデータともう一つのCSVファイルのデータを統合したいです.
古いコメントを表示
具体的に,FILE Aには実験から得た「ある値のID」と「その量」がそれぞれ1列目と2列目に書かれています.FILE Bには「そのID」と「IDに対応する要素の名称」がそれぞれ1列目と2列目に書かれています.これら2つのファイルから「ID」と「IDに対応する要素の名称」と「その量」を対応させて同じファイルの出力したいです.(検索して一致したものを同じ行に表示?)拙い説明で申し訳ありませんが,よろしくお願い致します.
6 件のコメント
【追加・変更】コメントを受けて、IDを数字から"ID_(数字)”に変更しました。
A = readtable('FILE_A.csv'); head(A,2) % 「ある値のID」と「その量」(先頭2行のみ表示)
B = readtable('FILE_B.csv'); head(B,2) % 「そのID」と「IDに対応する要素の名称」(先頭2行のみ表示)
[~,idx] = ismember(A.ID,B.ID); %FILE Aの「ID」が、FILE Bの「ID」に存在するか探しインデックスを得る
C = addvars(A,B.element_name(idx),'Before','measure','NewVariableNames','element_name')
writetable(C,'FILE_C.csv');
type FILE_C.csv
史哉
2022 年 6 月 6 日
移動済み: Atsushi Ueno
2022 年 8 月 17 日
Atsushi Ueno
2022 年 6 月 6 日
移動済み: Atsushi Ueno
2022 年 8 月 17 日
csvファイルのIDを数字から"ID_(数字)”に変更しました。プログラムは変更していませんが同様に動きました。IDが数値でも文字でも、ismember関数の出力は何行目に在るかを示すインデックス番号なので、A.element(index)でテーブル内の目的の値にアクセスすることができます。
史哉
2022 年 6 月 7 日
移動済み: Atsushi Ueno
2022 年 8 月 17 日
Atsushi Ueno
2022 年 6 月 8 日
移動済み: Atsushi Ueno
2022 年 8 月 17 日
>行数異なる物も扱えるような列追加の関数はMatlabに存在するのでしょうか.
- addvars関数が「行数が異なるデータを追加できる機能」を持つ事はないと思います。なぜなら、本質問の”ID”の様な関連性が判らない限り、どのデータが不足/過剰なのか判断出来ないからです。プログラマの責任で行数を合致させたデータをtableに追加する必要があります。
- あるとすればExcelのv(/h)lookup関数ですが、MATLAB自体にこれと同じ関数はありません
- 本質問や下記の様な情報が多くあります(matlab vlookupでググると沢山出てきます)
- Excel の VLOOKUP と同じ機能はありますか? - (mathworks.com)
- File Exchangeにも有志により作成されたvlookup関数が多数公開されています
- File Exchange - MATLAB Central (mathworks.com)
史哉
2022 年 6 月 13 日
移動済み: Atsushi Ueno
2022 年 8 月 17 日
回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Data Import from MATLAB についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!