如何从单元格数组中删除相同的行和重复的行? [英] how to remove identical rows and duplicated rows from a cell array?

查看:145
本文介绍了如何从单元格数组中删除相同的行和重复的行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个单元格数组,如下所示:

I have a cell array as follow:

  • 'FEM''FEM'
  • 'TPB''TP53'
  • 'ELL''TP53'
  • 'SIT1''GRB2'
  • 'TP53''ELL'

  • 'FEM' 'FEM'
  • 'TPB' 'TP53'
  • 'ELL' 'TP53'
  • 'SIT1' 'GRB2'
  • 'TP53' 'ELL'

我想要这样的输出:

'TPB''TP53'

'TPB' 'TP53'

有人可以帮我吗?

推荐答案

不确定您的结构,所以我认为是

Not sure of your structure so I assumed it was

{'A','B';...
 'C','D';...
 'E','F'};

删除所有重复项

Ex:{'A','A'}

dupe = zeros(size(A,1),1); 
for row = 1:size(A,1)
  dupe(row) = strcmp(A{row,1},A{row,2});
end

A_noDupes = A(~dupe,:);

删除所有重复的行

Ex:{'A','B'},{'B','A'},{'B','B'},{'A','A'}的任意组合,将导致所有内容被删除

注意:这也将删除一些但不是全部的重复对象(例如,如果您有{'E','E'}和{'E','A'},{' E','E'}将被删除)

Note: This will also remove some but not all dupes too, (i.e. if you have {'E','E'} and {'E','A'}, {'E','E'} will be removed)

A = A_noDupes;

for row = 1:size(A,1)
   temp = ismember(A,A(row,:))                  
   repeat(row,1) = length(find(temp(:,1) & temp(:,2))) <= 1
end

A_final = A(~repeat,:);

这篇关于如何从单元格数组中删除相同的行和重复的行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆