特定の複数列から条件を指定し、複数の行を抽出する

45 ビュー (過去 30 日間)
shin
shin 2020 年 11 月 19 日
コメント済み: shin 2020 年 11 月 21 日
 以下のようなdatファイルをreadtableで読み込んだ際に、eventIDとnameが条件に一致する場合を取り出したいのですがうまくいきません
eventID energy x y z name
____ _______ _____ ______ _________ _________________
0 0.2007 477.8 0 -0.001755 {'Compton' }
0 0.07819 479.4 2.96 2.991 {'Compton' }
0 0.06179 482 2.418 4.056 {'Compton' }
0 0.1703 485.5 10.41 4.328 {'PhotoElectric'}
1 0.3191 407.7 0 -0.001498 {'Compton' }
1 0.03521 404 -3.865 1.617 {'Compton' }
1 0.0325 403.6 -3.799 3.284 {'Compton' }
2 0.1383 427.3 0 -0.001569 {'Compton' }
2 0.01936 471.1 -53.27 9.833 {'Compton' }
3 0.04832 463.8 0 -0.001704 {'Compton' }
10000 ・・・・・・・・
条件は、
eventID ・・・・ name
_______ _____________
15 {'Compton' }
15 {'PhotoElectric'}
  eventID ・・・・ name
_______ _____________
27 {'Compton' }
27 {'Compton' }
   27      {'PhotoElectric'}
のようなときの複数行を取り出したいです。これをeventIDが10000のところまで繰り返して行いたいです。
findで試してみたりしているのですが、tableからlogicalに変換できません とエラーが出てきてしまい、うまくいきません。

採用された回答

Takao
Takao 2020 年 11 月 20 日
こんな感じでうまくいきませんかね。
data = readtable(XXXX)
i = 0:10000
rows = (data.eventID == i);
target(i) = data(rows);
end
find関数を使うよりも条件式を使ったほうがすっきりする気がします。
  1 件のコメント
shin
shin 2020 年 11 月 21 日
やはり条件文で回した方がいいですよね・・・ありがとうございます!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeString Parsing についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!