How to find column where 0 turns to 1 for each row
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Tanika Bawa
le 14 Juil 2022
Modifié(e) : Bruno Luong
le 15 Juil 2022
Hello!
I would like to be able to find the column (or column title) for each row where the 0 turns to 1.
I have attached example rows (egcolumnsep.mat), so for example for row 5, I would like it to return column 20 (or Bins_11). I would like an output for all the rows though. Some rows might have only 0's (this can be NaN). This basically gives me the reaction time for each row.
Thank you for your help! =)
0 commentaires
Réponse acceptée
Bruno Luong
le 15 Juil 2022
Modifié(e) : Bruno Luong
le 15 Juil 2022
load('egcolumnsep.mat');
c1 = find(strcmp(DATAb1.Properties.VariableNames,'Bins_1')); % == 10
% Extract relevant data
A = table2array(DATAb1(:,c1:end));
if ~all(ismember(A,[0 1]),'all')
error('Data must be 0 or 1')
end
[cols,rows] = find(diff(A.')==1);
cols = cols+c1;
Idx01 = table(rows,cols)
2 commentaires
Bruno Luong
le 15 Juil 2022
Modifié(e) : Bruno Luong
le 15 Juil 2022
Why didn't tell us that you are interested only the first transition in the question?
You can call this statement after the above scriot
groupsummary(Idx01, 'rows','min')
or start from scratch
load('egcolumnsep.mat');
c1 = find(strcmp(DATAb1.Properties.VariableNames,'Bins_1')); % == 10
% Extract relevant data
A = table2array(DATAb1(:,c1:end));
if ~all(ismember(A,[0 1]),'all')
error('Data must be 0 or 1')
end
[a,cols] = max(A,[],2);
cols = (cols+c1-1) .* (a==1) % returns 0 if no transition 0->1 is found
Plus de réponses (1)
Jonas
le 14 Juil 2022
Modifié(e) : Jonas
le 14 Juil 2022
yourMat=[0 0 0 0 0;
0 1 1 0 0;
0 0 0 1 0];
where=arrayfun(@(idx)find(diff(yourMat(idx,:))==1,1,'first')+1,1:size(yourMat,1),'UniformOutput',false)'
an empty cell shows that there was not such a change
you could set it to NaN and convert to an normal array by
where{cellfun('isempty',where)}=NaN
where=cell2mat(where)
3 commentaires
Jonas
le 14 Juil 2022
you can convert your table to a matrix before, e.g. yourTable{:,:} or table2array()
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!