Get all unique combinations of 2 columns from a table

조회 수: 10 (최근 30일)
Austin Burritt
Austin Burritt 2022년 1월 19일
댓글: Austin Burritt 2022년 1월 19일
I have a table that has 4 variables, similar to this:
Item1 Item2 Item3 Item4
_____ _____ _____ _____
1 5 7 10
What is the best way to produce the delta of each combination of columns? Ex. Item1 vs Item2, Item1 vs Item3, etc.

채택된 답변

Stephen23
Stephen23 2022년 1월 19일
V = {'Item1','Item2','Item3','Item4'};
T = table(1, 5, 7 ,10, 'VariableNames',V)
T = 1×4 table
Item1 Item2 Item3 Item4 _____ _____ _____ _____ 1 5 7 10
X = nchoosek(1:numel(V),2);
D = diff(T{:,V}(X),1,2);
Z = cell2table([V(X),num2cell(D)])
Z = 6×3 table
Var1 Var2 Var3 _________ _________ ____ {'Item1'} {'Item2'} 4 {'Item1'} {'Item3'} 6 {'Item1'} {'Item4'} 9 {'Item2'} {'Item3'} 2 {'Item2'} {'Item4'} 5 {'Item3'} {'Item4'} 3

추가 답변 (1개)

Cris LaPierre
Cris LaPierre 2022년 1월 19일
I would look into using the perms function, along with the unique and diff functions.
  댓글 수: 3
Cris LaPierre
Cris LaPierre 2022년 1월 19일
I was probably trying too hard to make use of the variablenames. Stephen's approach is simpler by using column numbers instead.
T = table(1, 5, 7 ,10, 'VariableNames', {'Item1' 'Item2' 'Item3' 'Item4'});
C = nchoosek(T.Properties.VariableNames,2)
C = 6×2 cell array
{'Item1'} {'Item2'} {'Item1'} {'Item3'} {'Item1'} {'Item4'} {'Item2'} {'Item3'} {'Item2'} {'Item4'} {'Item3'} {'Item4'}
delta = diff([T{1,{C{:,1}}};T{1,{C{:,2}}}])
delta = 1×6
4 6 9 2 5 3
Austin Burritt
Austin Burritt 2022년 1월 19일
His and yours are both excellent and elegant, thank you!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Tables에 대해 자세히 알아보기

태그

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by