同じ変数名をもつテー​ブル配列同士を横方向​に結合するにはどうす​ればいいですか?

21 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 28 Jan 2021
2つのテーブル配列があり、それぞれ、同じ変数名の列が含まれています。
この状態で、横方向に結合しようとすると、以下のエラーが発生します。
>> T = [T1,T2]
table 変数名が重複しています: 'x1'。
重複する変数名は、一方を削除するか、変数名を変更するなどで対応したいのですが、方法を教えてください。

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 28 Jan 2021
Edited: MathWorks Support Team on 28 Jan 2021
同じ変数名の保持する値が同一であれば、join 関数を使用することが可能です。
>> T = join(T1,T2);
T =
5×3 table
x1 x2 x3
_________ ________ ________
0.10665 0.86869 0.86869
0.9619 0.084436 0.084436
0.0046342 0.39978 0.39978
0.77491 0.25987 0.25987
0.8173 0.80007 0.80007
同じ変数名でも、保持する値が異なる場合、
  1. 同一の変数名を検知し、変数名を変更する
  2. キーとなる共通の変数を作成して innerjoin 関数で結合する
などの方法が考えられます。
1. 同一の変数名を検知し、変数名を変更する
T1 = array2table(rand(5,2),'VariableNames',{'x1','x2'});
T2 = array2table(rand(5,2),'VariableNames',{'x1','x3'});
% 同じ変数名があるか、検出
ind = contains(T2.Properties.VariableNames,T1.Properties.VariableNames);
T2.Properties.VariableNames{ind} = [T2.Properties.VariableNames{ind},'_T2']; % 変数名を変更
T_all = [T1,T2]; % 結合
>> T_all
T_all =
5×4 table
x1 x2 x1_T2 x3
________ ________ ________ ________
0.075854 0.12991 0.45054 0.82582
0.05395 0.56882 0.083821 0.53834
0.5308 0.46939 0.22898 0.99613
0.77917 0.011902 0.91334 0.078176
0.93401 0.33712 0.15238 0.44268
2. キーとなる共通の変数を作成して innerjoin 関数で結合する
T1 = array2table(rand(5,2),'VariableNames',{'x1','x2'});
T2 = array2table(rand(5,2),'VariableNames',{'x1','x3'});
% Key となる変数の追加
T1.Key = (1:height(T1))';
T2.Key = (1:height(T2))';
T_all = innerjoin(T1,T2,'Keys','Key') % 結合
T_all.Key = [] % Key変数の削除
>> T_all
T_all =
  5×4 table
      x1_T1         x2       x1_T2         x3   
    ________    ________    ________    ________
    0.075854     0.12991     0.45054     0.82582
     0.05395     0.56882    0.083821     0.53834
      0.5308     0.46939     0.22898     0.99613
     0.77917    0.011902     0.91334    0.078176
     0.93401     0.33712     0.15238     0.44268

More Answers (0)

Categories

Find more on 日付と時刻 in Help Center and File Exchange

Products


Release

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!