表格中矩阵列的子标题

时间:2017-12-13 16:03:16

标签: matlab matrix

这是我的玩具示例:

t = table([1,2,3;4,5,6;7,8,9],[10,11,12;13,14,15;16,17,18]);
t.Properties.VariableNames = {'system1', 'system2'};
t.Properties.RowNames = {'obs1', 'obs2', 'obs3'};

我想知道是否可以将子标题分配给每个变量的三列,例如{'min', 'mean', 'max'}

2 个答案:

答案 0 :(得分:4)

你可以使用像这样的单元格数字将这些字幕放在变量中:

t = table({'min', 'mean', 'max';  1,  2,  3;  4,  5,  6;  7,  8,  9},...
          {'min', 'mean', 'max'; 10, 11, 12; 13, 14, 15; 16, 17, 18});
t.Properties.VariableNames = {'system1', 'system2'};
t.Properties.RowNames = {'.','obs1', 'obs2', 'obs3'};  
%if you don't like dot (.) as a row name, replace it with char(8203) to have nameless row

将给出:

t =    
  4×2 table
                    system1                     system2         
            ________________________    ________________________

    .       'min'    'mean'    'max'    'min'    'mean'    'max'
    obs1    [  1]    [   2]    [  3]    [ 10]    [  11]    [ 12]
    obs2    [  4]    [   5]    [  6]    [ 13]    [  14]    [ 15]
    obs3    [  7]    [   8]    [  9]    [ 16]    [  17]    [ 18]

答案 1 :(得分:1)

如果您正在寻找功能性解决方案(例如t.system1.min)您可以将system1system2的子表嵌套为{'min', 'mean', 'max'}作为变量名称。在视觉上它不会像其他解决方案那样有用。

dat1 = [1,2,3;4,5,6;7,8,9];
dat2 = [10,11,12;13,14,15;16,17,18];

s1 = table(dat1(:,1),dat1(:,2),dat1(:,3));
s2 = table(dat2(:,1),dat2(:,2),dat2(:,3));

s1.Properties.VariableNames = {'min','mean','max'};
s1.Properties.RowNames = {'obs1', 'obs2', 'obs3'};
s2.Properties.VariableNames = {'min','mean','max'};
s2.Properties.RowNames = {'obs1', 'obs2', 'obs3'};

t = table(s1,s2);
t.Properties.VariableNames = {'system1', 'system2'};
t.Properties.RowNames = {'obs1', 'obs2', 'obs3'};