How to colaapse a table to reduce repeated rows?

2 次查看(过去 30 天)
Ho,
I have a table of 6 columns. Many rows are the same. I want to collapse the same rows into one. So I use this lines to create a new table:
vMarket = 'AB';
tb='Summer';
tp = 1;
mask=strcmpi(cTblSet.VM(:),vMarket) & strcmpi(cTblSet.TB(:),tb) & (corrTblSet.TimePeriod(:) == tp);
newtable = cTblSet(mask, :);
But the newtable has 0 rows, it should have 20 rows.
The 'TimePeriod' column is all numbers. If the mask is only
mask=strcmpi(cTblSet.VM(:),vMarket) & strcmpi(cTblSet.TB(:),tb)
Then newtable has the right number of rows.
Why? Why a column of numbers are not working properly here? How to fix this problem? Thanks,
Jennifer
  1 个评论
Stephen23
Stephen23 2015-8-27
This time I formatted your code for you, but in future please do it yourself by selecting the code and clicking the {} Code button that you will find above the textbox.

请先登录,再进行评论。

回答(3 个)

the cyclist
the cyclist 2015-8-27
The simplest way to do what you want is probably to use the unique command, with the 'rows' option.

JFz
JFz 2015-8-27
Thanks. But still I will need the mask to break the large table into smaller tables, because there is another column that is prices which is different for every row. I want to break the large table into smaller tables, each small has the same rows for the first 3 columns but different rows has different prices.

JFz
JFz 2015-8-27
I guess the problem is in the '==' in the mask. When I change it to '~=', the newtable has some contents. Then why isn't "==" work?
Thanks,
Jennifer

标签

尚未输入任何标签。

产品

Community Treasure Hunt

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

Start Hunting!

Translated by