如何转置MATLAB表?

How to transpose a MATLAB table?

提问人:CiaranWelsh 提问时间:1/12/2016 最后编辑:Brian Tompsett - 汤莱恩CiaranWelsh 更新时间:3/28/2021 访问量:27688

问:

我怎样才能翻转一张桌子,使其变成VariableNamesRowNames

   m0         m1         m10        m11        m12        m13        m14        m2         m3         m4          m5          m6         m7         m8         m9   
    ________    _______    _______    _______    _______    _______    _______    _______    _______    _______    ________    ________    _______    _______    _______

    0.096898    0.11567    0.23266    0.11393    0.51438    0.51438    0.51438    0.42039    0.11543    0.11024    0.060229    0.086558    0.11542    0.11537    0.43305

成为

        Chisq
        _______
m0       0.096898
m1        0.11567
m2        ...
...       ...
MATLAB的

评论


答:

13赞 GameOfThrows 1/12/2016 #1

您需要先将表转换为数组,然后再旋转并将其转换回表:

YourArray = table2array(YourTable);
YourNewTable = array2table(YourArray.');
YourNewTable.Properties.RowNames = YourTable.Properties.VariableNames;

你也可以试着看看会发生什么,但我不确定它是否做同样的事情(我认为它是那些误导性的名字之一)rot90(YourTable)

评论

1赞 EBH 2/20/2017
这可以缩短为 。 不接受表。NewTable = table(YourTable{:,:}.',... 'RowNames',YourTable.Properties.VariableNames)rot90
1赞 traindriver 4/13/2017
如果表具有该行的名称,请添加以下行:YourNewTable.Properties.VariableNames = YourTable.Properties.RowNames;
0赞 JohnDoe 7/12/2017
我也这样做了。我的变量具有不同的数据类型(uint8、float32 等)。当我创建新表时,所有变量都转换为 uint16。我怎样才能避免这种情况?
0赞 Tymric 11/30/2022
@EBH这会将旧表完全放在新表的第一个变量中。我不认为 array2table 函数会越来越重要
0赞 Dan Erez 12/20/2016 #2
function [tableTransposed] = transposeTable(tableIn)
%this function transposes a table. 
props =tableIn.Properties.VariableNames;

tableTransposed = table();
tableSz = size(tableIn);
tableTransposed.metricName = props';
tableTransposed(1,:) = [];
for newPropertyNum = 1:tableSz(1)
    propCurr = table2array(tableIn(newPropertyNum,1));
    if isa(propCurr,'numeric')
        newProperty = num2str( propCurr );
    else %assumed to be string
        newProperty = propCurr;

    end
    tableTransposed = setfield(tableTransposed,newProperty,table2array(tableIn(newPropertyNum,2:end))');
end
0赞 winkmal 9/29/2020 #3

从 MATLAB R2018a 开始,您还可以使用 ROWS2VARS 函数。 我发现这个函数添加了一个额外的列,调用到表中,这可能不是你想要的。OriginalVariableNames