How to remove repeating pair
2 次查看(过去 30 天)
显示 更早的评论
Hi,
I have the below table,(my 3rd column is just a Rsquare value)
A B 1
N M 1
Y L 1
B A 1
K U 1
L Y 1
A B 1
U K 1
P G 1
M N 1
X Z 1
U K 1
I only want to keep one combination out of the below: in row 1, row4, row7 (in my definition, A-->B is same B--> A, and also remove repeating pair like row1 and row3 is just a duplicate).Filtering is just based on column1 & column2.
A B 1
B A 1
A B 1
From above only keep
A B 1
and finally my output should be as below:
A B 1
N M 1
Y L 1
K U 1
P G 1
X Z 1
Many thanks in advance,
0 个评论
采纳的回答
Andrei Bobrov
2016-7-23
编辑:Andrei Bobrov
2016-7-23
without 'stable'
A={'HT0MEK1' 'H0MEK1'
'HT0MEK2' '78 T0MEK2'
'JT0KEL3' 'JKEL3_ul'
'JT0KEL4' '12 0KEL4_45'
'T0KEL5' 'P0KEL5_89K_45um'
'J0KEL6' 'KEL6_Y_9Et4_y'
'BK0JIL7' 'LG_JIL7'
'HA0GEK8' 'K0GEK8'
'H0GEK9' 'H0GEK9'
'HT0MEK1' 'H0MEK1'
'HT0MEK2' '78 T0MEK2'
'JKEL3_ul' 'JT0KEL3'
'12 0KEL4_45' 'JT0KEL4'
'KEL6_Y_9Et4_y' 'J0KEL6'
'12 0KEL4_45' 'JT0KEL4'
'P0KEL5_89K_45um' 'T0KEL5'
'KEL6_Y_9Et4_y' 'J0KEL6'};
a1 = sort(A')';
[~,b0,c0] = unique(a1,'first');
[~,ii] = sort(b0);
[~,i2] = sort(ii);
c = reshape(i2(c0),size(A));
[~,b] = unique(c,'first','rows');
[~,ii] = sort(b);
[~,i2] = sort(ii);
b1 = b(ii);
out = a1(b1,:);
0 个评论
更多回答(2 个)
Azzi Abdelmalek
2016-7-19
编辑:Azzi Abdelmalek
2016-7-19
A={'A' 'B' 1
'N' 'M' 1
'Y' 'L' 1
'B' 'A' 1
'K' 'U' 1
'L' 'Y' 1
'A' 'B' 1
'U' 'K' 1
'P' 'G' 1
'M' 'N' 1
'X' 'Z' 1
'U' 'K' 1}
b=arrayfun(@(x) sort(strjoin(A(x,1:2),'')),(1:size(A,1))','un',0)
[~,ii]=unique(b,'stable')
out=A(ii,:)
Result
out =
'A' 'B' [1]
'N' 'M' [1]
'Y' 'L' [1]
'K' 'U' [1]
'P' 'G' [1]
'X' 'Z' [1]
5 个评论
Guillaume
2016-7-20
编辑:Guillaume
2016-7-20
As I said, it's always a good idea to mention the version of matlab you're using if it's not current.
How old is your version of matlab, if the 'stable' option of unique is not supported? Indeed, the purpose of 'stable' is to preserve the order in which the elements first appear. Since your version does not support that option, you'll have to go with the default, sorted output. The order of your output should not matter anyway.
If it does matter to you, you will either have to upgrade to a newer version of matlab or write your own stable sort.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!