Table comparison [String - cell compare]
20 ビュー (過去 30 日間)
古いコメントを表示
I have 2 tables that contain the same headers of the first row.
- My goal is to see if the cells contains the same values
- if true - contaminate cells to present the values
From the two tables below.
- I need to have my comparison for example : a cell in X would be 1,5 for Y XW
Part of my code is:
for i=1 : size(Table1)
if strcmpi(Table1.X(i), Table2.X(i) ==1)
X12= cellstr(strcat(....., ',' , ..........)
I am just confused.
I am currently getting - conversion to double from cell is not possible.
Table1 Table 2 expected result
X Y X Y X Y
1 XW 5 XW 1, 5 XW
2 XR 4 XR 2, 4 XR
3 XR 3 XR 3 XR
4 XW 2 XZ
5 XX 1 XZ
1 件のコメント
the cyclist
2021 年 11 月 11 日
It would be much easier to help if you uploaded the two tables in a MAT file. You can use the paperclip icon in the INSERT section of the toolbar.
回答 (2 件)
Seth Furman
2021 年 11 月 12 日
編集済み: Seth Furman
2021 年 11 月 15 日
Take a look at the table functions innerjoin and outerjoin:
- https://www.mathworks.com/help/matlab/ref/table.join.html
- https://www.mathworks.com/help/matlab/ref/outerjoin.html
t1 = table((1:5)', categorical(["XW";"XR";"XR";"XW";"XX"]), 'VariableNames', ["X","Y"])
t2 = table((5:-1:1)', categorical(["XW";"XR";"XR";"XZ";"XZ"]), 'VariableNames', ["X","Y"])
tJoined = innerjoin(t1, t2, "Keys", "Y")
tJoined = mergevars(tJoined, ["X_t1", "X_t2"], "NewVariableName", "X")
[groupNums, Y] = findgroups(tJoined.Y)
X = splitapply(@(x) {unique(x)'}, tJoined.X, groupNums)
table(X, Y)
0 件のコメント
Image Analyst
2021 年 11 月 12 日
Try this:
% Create saple data:
x1 = [1;2;3;4;5]
y1 = {'XW'; 'XR';'XR';'XW';'XX'}
x2 = [5;4;3;2;1]
y2 = {'XW'; 'XR';'XR';'XZ';'XZ'}
table1 = table(x1, y1, 'VariableNames',{'X', 'Y'})
table2 = table(x2, y2, 'VariableNames',{'X', 'Y'})
% Create output table.
table3 = table({0}, {'?'}, 'VariableNames',{'X', 'Y'});
count = 1;
for row = 1 : size(table1, 1)
thisString = table1.Y{row};
fprintf('Searching for %s.\n', thisString)
if isequal(table1.Y{row}, table2.Y{row})
% Columns y match.
table3.X{count} = unique([table1.X(row), table2.X(row)], 'stable');
table3.Y{count} = thisString;
count = count + 1;
end
end
table3
You'll see
table3 =
3×2 table
X Y
_______ ______
{[1 5]} {'XW'}
{[2 4]} {'XR'}
{[ 3]} {'XR'}
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Tables についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!