我在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'
任何人都可以帮助我吗?非常感谢。
答案 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排序。如果您需要,请通知我。