在for循环中按唯一列值提取行分组。Matlab中的多输出

在for循环中按唯一列值提取行分组。Matlab中的多输出,matlab,for-loop,unique,Matlab,For Loop,Unique,假设我有一张桌子 Name = {'Ann';'Joe';'Bob';'Mary';'Katy','John','Lee'}; Age = [13,17,13,17,15,15,15]; Weight = [100,160,160,124],142,112,142]; Grade = [73,99,50,64,88,45,76]; 我想使用for循环(实际数据要大得多),并按“age”列中的每个唯一值分组,输出具有相同值的不同表。 在这种情况下,如果我们按年龄分组,一张桌子上有安和鲍勃(13岁

假设我有一张桌子

Name = {'Ann';'Joe';'Bob';'Mary';'Katy','John','Lee'};
Age = [13,17,13,17,15,15,15];
Weight = [100,160,160,124],142,112,142];
Grade = [73,99,50,64,88,45,76];
我想使用for循环(实际数据要大得多),并按“age”列中的每个唯一值分组,输出具有相同值的不同表。 在这种情况下,如果我们按年龄分组,一张桌子上有安和鲍勃(13岁),第二张桌子上有乔和玛丽,第三张桌子上有凯蒂、约翰和李

到目前为止,我知道当组很小(不是很多表)时如何进行分组,但是当我有很多独特的值将它们分组时如何进行分组

group = findgroups(data.Age);
group2 = group(:,1) == 2;
data_group2 = data(group2,:);

您可以使用
unique
函数获取所有唯一的年龄值,然后在这些值上运行for循环

Name={'Ann','Joe','Bob','Mary','Katy','John','Lee'};
年龄=[13,17,13,17,15,15];
重量=[100160124142112142];
等级=[73,99,50,64,88,45,76];
年龄组=唯一(年龄);
表={};
对于i=1:长度(年龄组)
指数=年龄==年龄组(i);
表{i}=表(分类(名称(指数))、年龄(指数)、、权重(指数)、等级(指数)、、‘变量名称’、{Name’、‘年龄’、‘权重’、‘等级’});
结束
然后您可以访问每个表,如下所示:

>表{1}
ans=
2×4表
姓名年龄体重等级
____    ___    ______    _____
安1310073
鲍勃1316050
>>表{2}
ans=
3×4表
姓名年龄体重等级
____    ___    ______    _____
凯蒂1514288
约翰15 112 45
李15 142 76