我使用"医院"执行以下行。数据集并获得以下内容:
>> statarray = grpstats(dsa,{'Smoker','Sex'},'mean','DataVars',{'Age','Weight'})
statarray =
Smoker Sex GroupCount mean_Age mean_Weight
0_Female false Female 40 37.425 130.32
0_Male false Male 26 38.808 180.04
1_Female true Female 13 38.615 130.92
1_Male true Male 21 39.048 181.14
我想知道它是否容易变得像这样:
Smoker GroupCount mean_Age mean_Weight Male Female
0 false 66 37.97 149.91 21 40
1 true 34 38.882 161.94 26 13
我无法弄清楚如何将分类变量带到像stat表这样的列而不是将它们作为行。也许这对grpstats来说是不可能的。只是好奇。谢谢!
答案 0 :(得分:0)
您可以在单独的sex
中计算crosstab
,然后将其连接到statarray
中的一个表:
statarray = grpstats(dataset2table(hospital),{'Smoker'},'mean',...
'DataVars',{'Age','Weight'});
statarray{:,end+1:end+2} = crosstab(hospital.Smoker,hospital.Sex);
statarray.Properties.VariableNames(end-1:end) = categories(hospital.Sex);
输出:
statarray =
Smoker GroupCount mean_Age mean_Weight Female Male
______ __________ ________ ___________ ______ ____
0 false 66 37.97 149.91 40 26
1 true 34 38.882 161.94 13 21
您可能会注意到我将statarray
从数据集转换为表格,这是因为Matlab的文档中有此消息:
将来的版本中可能会删除数据集数据类型。要使用异构数据,请改用MATLAB®表数据类型。有关更多信息,请参阅MATLAB表文档。
事实上,table
更友善......