一つのCSVファイルのデータともう一つのCSVファイルのデータを統合したいです.
Mostrar comentarios más antiguos
具体的に,FILE Aには実験から得た「ある値のID」と「その量」がそれぞれ1列目と2列目に書かれています.FILE Bには「そのID」と「IDに対応する要素の名称」がそれぞれ1列目と2列目に書かれています.これら2つのファイルから「ID」と「IDに対応する要素の名称」と「その量」を対応させて同じファイルの出力したいです.(検索して一致したものを同じ行に表示?)拙い説明で申し訳ありませんが,よろしくお願い致します.
6 comentarios
Atsushi Ueno
el 4 de Jun. de 2022
Movida: Atsushi Ueno
el 17 de Ag. de 2022
【追加・変更】コメントを受けて、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
史哉
el 6 de Jun. de 2022
Movida: Atsushi Ueno
el 17 de Ag. de 2022
Atsushi Ueno
el 6 de Jun. de 2022
Movida: Atsushi Ueno
el 17 de Ag. de 2022
csvファイルのIDを数字から"ID_(数字)”に変更しました。プログラムは変更していませんが同様に動きました。IDが数値でも文字でも、ismember関数の出力は何行目に在るかを示すインデックス番号なので、A.element(index)でテーブル内の目的の値にアクセスすることができます。
史哉
el 7 de Jun. de 2022
Movida: Atsushi Ueno
el 17 de Ag. de 2022
Atsushi Ueno
el 8 de Jun. de 2022
Movida: Atsushi Ueno
el 17 de Ag. de 2022
>行数異なる物も扱えるような列追加の関数はMatlabに存在するのでしょうか.
- addvars関数が「行数が異なるデータを追加できる機能」を持つ事はないと思います。なぜなら、本質問の”ID”の様な関連性が判らない限り、どのデータが不足/過剰なのか判断出来ないからです。プログラマの責任で行数を合致させたデータをtableに追加する必要があります。
- あるとすればExcelのv(/h)lookup関数ですが、MATLAB自体にこれと同じ関数はありません
- 本質問や下記の様な情報が多くあります(matlab vlookupでググると沢山出てきます)
- Excel の VLOOKUP と同じ機能はありますか? - (mathworks.com)
- File Exchangeにも有志により作成されたvlookup関数が多数公開されています
- File Exchange - MATLAB Central (mathworks.com)
史哉
el 13 de Jun. de 2022
Movida: Atsushi Ueno
el 17 de Ag. de 2022
Respuestas (0)
Categorías
Más información sobre Data Import from MATLAB en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!