一つの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!