一つのCSVファイルのデータともう一つのCSVファイルのデータを統合したいです.
Afficher commentaires plus anciens
具体的に,FILE Aには実験から得た「ある値のID」と「その量」がそれぞれ1列目と2列目に書かれています.FILE Bには「そのID」と「IDに対応する要素の名称」がそれぞれ1列目と2列目に書かれています.これら2つのファイルから「ID」と「IDに対応する要素の名称」と「その量」を対応させて同じファイルの出力したいです.(検索して一致したものを同じ行に表示?)拙い説明で申し訳ありませんが,よろしくお願い致します.
6 commentaires
Atsushi Ueno
le 4 Juin 2022
Déplacé(e) : Atsushi Ueno
le 17 Août 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
史哉
le 6 Juin 2022
Déplacé(e) : Atsushi Ueno
le 17 Août 2022
Atsushi Ueno
le 6 Juin 2022
Déplacé(e) : Atsushi Ueno
le 17 Août 2022
csvファイルのIDを数字から"ID_(数字)”に変更しました。プログラムは変更していませんが同様に動きました。IDが数値でも文字でも、ismember関数の出力は何行目に在るかを示すインデックス番号なので、A.element(index)でテーブル内の目的の値にアクセスすることができます。
史哉
le 7 Juin 2022
Déplacé(e) : Atsushi Ueno
le 17 Août 2022
Atsushi Ueno
le 8 Juin 2022
Déplacé(e) : Atsushi Ueno
le 17 Août 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)
史哉
le 13 Juin 2022
Déplacé(e) : Atsushi Ueno
le 17 Août 2022
Réponses (0)
Catégories
En savoir plus sur Data Import from MATLAB dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!