チャーターブログ

あかさたな 浜金谷

【MATLAB】tableの転置をする

table型のデータを転置しようとすると

>> X

X =

  2×5 table

       E1          E2           E3          E4           E5   
    ________    _________    ________    _________    ________

    2.05e+09    2.085e+09    2.12e+09    2.155e+09    2.19e+09
      -4.698        -6.05      -5.715       -4.156      -2.758

>> X'
エラー:  '  (line 192)
関数 'ctranspose' (タイプ'table' の入力引数) が未定義です。

>> X.'
エラー:  .'  (line 191)
関数 'transpose' (タイプ'table' の入力引数) が未定義です。

とエラーが出てしまう

検索すると、一度cellに変換してから転置すると良いそう

>> Xt = table2cell(X)

Xt =

  2×5 の cell 配列

  1 列から 4 列

    {[2.0500e+09]}    {[2.0850e+09]}    {[2.1200e+09]}    {[2.1550e+09]}
    {[   -4.6980]}    {[   -6.0500]}    {[   -5.7150]}    {[   -4.1560]}

  5 列

    {[2.1900e+09]}
    {[   -2.7580]}

>> Xt = cell2table(Xt')

Xt =

  5×2 table

      Var1        Var2 
    _________    ______

     2.05e+09    -4.698
    2.085e+09     -6.05
     2.12e+09    -5.715
    2.155e+09    -4.156
     2.19e+09    -2.758

結局、まとめると

>> Xt = cell2table(table2cell(X)')

を実行すれば良い

めでたしめでたし

データセットも同じ様に単に'や.'をつけただけでは転置出来ないので一度セルに直すそう

もし行名や変数名があれば、下のように行名には転置前の変数名を、変数名には転置前の行名を指定すれば良い

>> Xt = cell2table(table2cell(X)','RowNames',X.Properties.VariableNames,'VariableNames',X.Properties.RowNames)

参考:

データセットやテーブルはどのように転置しますか? - MATLAB Answers - MATLAB Central