根据两个条件删除行 - Matlab

时间:2014-06-24 17:06:32

标签: string matlab cell conditional-statements

我在Matlab中有一个由FIRM按字母顺序组织的单元格变量。每个FIRM将对应不同的重复C1和C2。对于每个FIRM,我想删除重复的C2(和相应的行)。方法是选择D2距离D1最远的行。

初始单元格:

FIRMS C1 C2 D1 D2 D3 'ACRO' '01464''043605' '19961231''19970212''19970401' 'ACRO' '01464''043605' '19961231''19970119''19970313' 'ACMJ' '00118''043605' '19961231''19970114''19970219' 'ACMJ' '01464''000151' '19961231''19970121''19970218' 'ACMJ' '00192''007960''19961231''19970523''19970728'

最终细胞:

'ACRO' '01464''043605' '19961231''19970212''19970401' 'ACMJ' '00192''007960''19961231''19970523''19970728'

任何人都可以帮助我吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

试试这个

a = initial_cell;
b = (abs(str2num(cell2mat(a(:,4))) - str2num(cell2mat(a(:,5)))));
[temp ind1] = sort(b);
s  = a(ind1(end:-1:1),:);
[temp1 ind2 temp2] = unique(strcat(s(:,1),s(:, 3)));
out_cell = s(ind2,:);

输出

out_cell = 

'ACMJ'    '01464'    '000151'    '19961231'    '19970121'    '19970218'
'ACMJ'    '00192'    '007960'    '19961231'    '19970523'    '19970728'
'ACMJ'    '00118'    '043605'    '19961231'    '19970114'    '19970219'
'ACRO'    '01464'    '043605'    '19961231'    '19970119'    '19970313'

请注意,out_cell在此输出中按FIRM排序,而在问题中声明的输出中未按FIRM排序。如果您需要,请通知我。