我有一个包含3个不同列的单元格。第一个是简单的排名,第二个是由X个元素组成的代码,第三个是由Y个元素组成的代码,对于第二列中的某个数字组合通常是相同的。因此,如果在第二列中你有数字345,那么在第三列你可能总是有798.事情是有时它会改变。所以我所拥有的是:
1 453 4789
1 56 229
1 453 1246 %here the corresponding code has changed
2 43 31
2 453 1246 %here the code did not change
3 56 31 %here the corresponding code has changed (it was 229 previously)
最后我想要的是一个带有三列的新单元格,只能说明观察到第三列代码(对应于代码形成第二列)的情况。例如,在这个简单的例子中,我会得到:
1 453 1246
3 56 31
答案 0 :(得分:0)
假设值在矩阵中,这是一个可能的解决方案:
CJ2 = [1 453 4789
1 56 229
1 453 1246
2 43 31
2 453 1246
3 56 31];
changes = zeros(size(CJ2));
nChanges = 0;
for i = 2:size(CJ2,1)
pos = find(CJ2(1:i-1,2) == CJ2(i,2), 1, 'last');
if ~isempty(pos) && CJ2(pos,3) ~= CJ2(i,3)
nChanges = nChanges + 1;
changes(nChanges, :) = CJ2(i,:);
end
end
changes = changes(1:nChanges, :);
changes
结果:
>> changes
changes =
1 453 1246
3 56 31