How can I find pairs of rows with the same values in certain columns?
3 views (last 30 days)
Show older comments
For a (very) huge data set in form of a 350000x11 matrix I need to find pairs of rows
- with identical values in columns 1,6 and 7 and
- with a different value in column 10 (dummy variable, either 0 or 1)
and calculate the difference in column 11 for each pair matching the above mentioned conditions. Using a for loop I only managed to compare consecutive rows:
[m,n] = size(X)
for i=1:m-1
if X(i,1) == X(i+1,1) && X(i,6) == X(i+1,6) && X(i,7) == X(i+1,7) && X(i,10) ~= X(i+1,10)
X(i,11)-X(i+1,10)
end
end
Any ideas? Thank you in advance!
0 Comments
Accepted Answer
Andrei Bobrov
on 27 Oct 2014
Edited: Andrei Bobrov
on 29 Oct 2014
k = diff(X);
i0 = find(all(k(:,[1,6,7]) == 0,2) & k(:,10) ~= 0);
out = permute(cat(3,X(i0,:),X(i0+1,:)),[3, 2, 1]);
add
difference_in_column_11 = k(i0,11);
3 Comments
More Answers (0)
See Also
Categories
Find more on Graphics Performance in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!