提问人:CiaranWelsh 提问时间:1/12/2016 最后编辑:Brian Tompsett - 汤莱恩CiaranWelsh 更新时间:3/28/2021 访问量:27688
如何转置MATLAB表?
How to transpose a MATLAB table?
问:
我怎样才能翻转一张桌子,使其变成VariableNames
RowNames
即
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 ...
... ...
答:
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
评论