tebleにフィルターをかけるには

19 views (last 30 days)
chihiro kanada
chihiro kanada on 2 Jun 2019
Commented: Kenta on 3 Jun 2019
##やりたいこと
MatlabでCSVを取り込み、データセットに分けて解析をしたいと思っていますが、
データセットに分けるところで苦戦をしています。
具体的には以下のような操作を考えています。
db =
date color name field number
______ ______ ____ ___ __
2016/10/13 グリーン tanaka 1号 3.4848
2016/10/17 グリーン tanaka 1号 17.576
2016/10/22 グリーン tanaka 2号 14.697
2016/10/25 グリーン tanaka 2号 28.939
2016/10/29 グリーン tanaka 2号 56.818
.....(略)
fieldlst = [1号, 2号, 3号.....]
while fieldlst(i)
  sample = 「field == fieldlst(i)となるような行だけを抽出したもの」
  .....分析処理......
  i = i+1
↑上記"sample"の作り方がわかりません。
##試したこと
公式ドキュメントのtableは参照しましたが、該当ページを見つけることができませんでした。
*公式ドキュメント
https://jp.mathworks.com/help/matlab/tables.html?s_tid=CRUX_lftnav
##補足情報(FW/ツールのバージョンなど)
R2019 使用

Accepted Answer

Kenta
Kenta on 2 Jun 2019
clear;clc
load tbl
field=tbl.field;
for i=1:max(field)
field_idx=find(field==i);
tbl_extracted=tbl(field_idx,:);
name=sprintf('%d_data.mat',i);
save(name, 'tbl_extracted')
end
上の具体例の表に似たものをtblとして保存しています。
tbl.(ドット)という形でfieldにアクセスして、ループ内で、条件に合うものを探していけばよいと思います。
詳細な形式がわからないので、このまま使えるかは不明ですが、おおよそこのような形で望むデータが得られると思います。
  2 Comments
chihiro kanada
chihiro kanada on 2 Jun 2019
詳細が不明瞭にもかかわらず、アドバイスいただきありがとうございます!!
インデックスを作って、条件に合うものを抽出するということですね。
Kenta
Kenta on 3 Jun 2019
はい、その通りです。お役に立てて幸いです。

Sign in to comment.

More Answers (1)

Yoshio
Yoshio on 2 Jun 2019
こちらが参考になるかと思います。
これを踏まえた上で、以下のようなやり方では、いかがでしょうか。
fieldlst = [1号, 2号, 3号.....]
for i = 1:length(fieldlst)
j = find(db.field == fieldlst(i)) % dbでfieldlst(i)に該当する 行を見つける(複数)
for k = 1:length(j)
sample = db(j(k),:) % ここでは該当する一行毎の処理を想定
.....分析処理......
end % of k
end % of i
dbのデータを作っていないので、間違いがあるかも知れません。
次回ご質問際は、簡単に検証できるようなダミーコード(今回ですとdbの生成コード)を入れていただけると助かります。
ご参考まで。
  1 Comment
chihiro kanada
chihiro kanada on 2 Jun 2019
初心者にて、ダミーコードを付けるという考えに至りませんでした^^;
次回以降、気を付けたいと思います。
汎用性の高そうな手法をご教示いただきありがとうございます。
Itakuraさんの案と合わせて使わせていただきますm(__)m

Sign in to comment.

Categories

Find more on MATLAB 入門 in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!