Sorting through labelled data
1 次查看(过去 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 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!