How to find column where 0 turns to 1 for each row
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Tanika Bawa
el 14 de Jul. de 2022
Editada: Bruno Luong
el 15 de Jul. de 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 comentarios
Respuesta aceptada
Bruno Luong
el 15 de Jul. de 2022
Editada: Bruno Luong
el 15 de Jul. de 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 comentarios
Bruno Luong
el 15 de Jul. de 2022
Editada: Bruno Luong
el 15 de Jul. de 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
Más respuestas (1)
Jonas
el 14 de Jul. de 2022
Editada: Jonas
el 14 de Jul. de 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 comentarios
Jonas
el 14 de Jul. de 2022
you can convert your table to a matrix before, e.g. yourTable{:,:} or table2array()
Ver también
Categorías
Más información sobre Matrices and Arrays en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!