Sorting through labelled data
29 次查看(过去 30 天)
显示 更早的评论
Given the data of two columns below with negative and positive label
'0,Negative'
'1,Negative'
'1,Positive'
'2,Negative'
'2,Positive'
'3,Positive'
'4,Negative'
'4,Positive'
'5,Positive'
'9,Positive'
Please I want to use the code below to sort for negative or positive numbers instead of even and odd numeric data example code below
for col = 1:size(croppedz, 2)
%sort even/odd rows, reshape each into a Kx? matrix, sum across rows and divide the two sums
% K = can be anynumber that groups it
result(:, col) = sum(reshape(sort(croppedz(1:2:end, col)), K, []), 1) ./ sum(reshape(sort(croppedz(2:2:end, col)), K, []), 1);
end
end
Thanks for your help in advance
Tino
0 个评论
采纳的回答
KSSV
2019-6-4
str = { '0,Negative'
'1,Negative'
'1,Positive'
'2,Negative'
'2,Positive'
'3,Positive'
'4,Negative'
'4,Positive'
'5,Positive'
'9,Positive'} ;
% Get positive
idx = contains(str,'Positive') ;
str(idx)
2 个评论
KSSV
2019-6-4
str = { '0,Negative'
'1,Negative'
'1,Positive'
'2,Negative'
'2,Positive'
'3,Positive'
'4,Negative'
'4,Positive'
'5,Positive'
'9,Positive'} ;
V = regexp(str,'\d+','match') ;
V = [V{:}] ;
iwant = cellfun(@str2num,V')
更多回答(1 个)
Priysha Aggarwal
2019-6-4
If you can skip using the above given for loop, you can store the above strings in a string array as :
A = ["0","Negative";
"1","Positive";
...];
Now you can sort A according to column 2:
[mat,idx] = sort(A(:,2)); % this will sort 'negative' and 'positive' labels alphabetically
sortedA = A(idx,:); %sorting column 1 accordingly
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!