I'd like to find groups in my table based on the values of multiple columnns- but I'd like to have the groups allow multiple specific values in one of the columns.
For the "I'd like to find groups in my table based on the values of multiple columnns" part, I can do that:
>> T=table({'Home Depot';'Lowes';'Home Depot';'Menards';'Menards';'Home Depot'},{'USA';'China';'Canada';'France';'USA';'Canada'},{'Smith';'Johnson';'Jones';'Miller';'Williams';'Brown'},[123;456;789;1010;1112;1314],'VariableNames',{'Store' 'Country' 'Manager' 'Revenue'});T = 6×4 table Store Country Manager Revenue ______________ __________ ____________ _______ {'Home Depot'} {'USA' } {'Smith' } 123 {'Lowes' } {'China' } {'Johnson' } 456 {'Home Depot'} {'Canada'} {'Jones' } 789 {'Menards' } {'France'} {'Miller' } 1010 {'Menards' } {'USA' } {'Williams'} 1112 {'Home Depot'} {'Canada'} {'Brown' } 1314 >> [G,~,idx]=unique(T(:,[1 2]),'stable') %want 'stable' option so not using findgroups
G = 5×2 table Store Country ______________ __________ {'Home Depot'} {'USA' } {'Lowes' } {'China' } {'Home Depot'} {'Canada'} {'Menards' } {'France'} {'Menards' } {'USA' }idx = 1 2 3 4 5 3
But what I'd like to do is introduce an 'or' grouping rule to designate the region that Country is in. In this case, I want to group the Country by region as well. I can also do that… though not sure my converting to cell method is the best way, but it works.
>> NA=find(ismember(table2cell(T(:,2)),{'USA','Canada','Mexico'}))NA = 1 3 5 6
But ultimately, I want to do this at the same time- show groups that match both the Store as well as the Region. I am not sure the best way to go about this- my actual table is very large. I thought of creating a new varibale for Region and then match off that- is that the way to go or can I combine these into one sort? I was also considering looping methods, but not sure the most efficient way to proceed. My desired result would be:
T = 6×4 table Store Country Manager Revenue ______________ __________ ____________ _______ {'Home Depot'} {'USA' } {'Smith' } 123 {'Lowes' } {'China' } {'Johnson' } 456 {'Home Depot'} {'Canada'} {'Jones' } 789 {'Menards' } {'France'} {'Miller' } 1010 {'Menards' } {'USA' } {'Williams'} 1112 {'Home Depot'} {'Canada'} {'Brown' } 1314 idx = 1 2 1 3 4 1
Thanks for any insight.
Best Answer