MATLAB - 将分类变量显示为列而不是行?

时间:2017-02-12 08:24:29

标签: matlab

我使用"医院"执行以下行。数据集并获得以下内容:

>> 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来说是不可能的。只是好奇。谢谢!

1 个答案:

答案 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更友善......