Filter contents of a table
10 ビュー (過去 30 日間)
古いコメントを表示
The following contents are stored in a table, in variable 'tbl',
Multico value
______________
{'1'} {'2'} 1
{'2'} {'3'} 2
{'3'} {'4'} 1
{'4'} {'5'} 2
I would like to do the following,
variable = 2,
If the variable is present in tbl.Multico, I would like to retain only those rows and delete the remining rows.
Example,
Multico value
______________
{'1'} {'2'} 1
{'2'} {'3'} 2
Also, if variable is present in column 2 of Multico, the value in column 2 of tbl will remain unchanged. If the variable is
in column 1 of Multico the sign of the value in column2 of tbl will change.
Th expected output is,
Multico value
______________
{'1'} {'2'} 1
{'2'} {'3'} -2
I'd like to ask for suggstions on how this can be done.
Is there a function similar to python's groupby for filtering contents of a table?
0 件のコメント
採用された回答
Guillaume
2019 年 11 月 24 日
Any reason why Multico is a cell array? If all the cells are just scalar, then it's a waste of memory and complicates the code for no good reason.
So first step, convert that cell array into a 2 column matrix:
yourtable.Multico = cell2mat(yourtable.Multico);
Your filtering is then trivially done:
serchval = 2;
newtable = yourtable(any(yourtable.Multico == searchval, 2), :)
If you then want to change the sign of value when searchval is in first column of Multico:
tochange = newtable.Multico(1, :) == searchval;
newtable.value(tochange) = -newtable.value(tochange)
4 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Data Type Identification についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!