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!