How to find column where 0 turns to 1 for each row
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Tanika Bawa
am 14 Jul. 2022
Bearbeitet: Bruno Luong
am 15 Jul. 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 Kommentare
Akzeptierte Antwort
Bruno Luong
am 15 Jul. 2022
Bearbeitet: Bruno Luong
am 15 Jul. 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 Kommentare
Bruno Luong
am 15 Jul. 2022
Bearbeitet: Bruno Luong
am 15 Jul. 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
Weitere Antworten (1)
Jonas
am 14 Jul. 2022
Bearbeitet: Jonas
am 14 Jul. 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 Kommentare
Jonas
am 14 Jul. 2022
you can convert your table to a matrix before, e.g. yourTable{:,:} or table2array()
Siehe auch
Kategorien
Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!