필터 지우기
필터 지우기

How can I find a corresponding data value to a text value?

조회 수: 4 (최근 30일)
Quinty van der Heijden
Quinty van der Heijden 2022년 2월 9일
댓글: dpb 2022년 2월 15일
I read an Excel file which contains text and numerical data. It looks like this:
For each trial I have to see whether there is a looking ('yes') and eventually add up the durations of all the yesses for each trial.
I found the correct trial with the following code:
T = readcell(BehDataParticipant2);
T_trial1 = strcmp(T, 'Trial 1');
It resulted in zeros and ones throughout the whole table. But now I don't know how to find a 'yes' and the corresponding duration in those corresponding rows. Can you help me? Thanks!

채택된 답변

dpb
dpb 2022년 2월 9일
tToy=readtable(BehDataParticipant2,'ReadVariableNames',1,'VariableNamingRule','preserve');
tToy.LookLeftToy=categorical(tToy.LookLeftToy);
tToySummary=groupsummary(tToy,tToy.LookLeftToy,'sum',tToy.("Duration - msec"))
  댓글 수: 6
Quinty van der Heijden
Quinty van der Heijden 2022년 2월 15일
I'm sorry, was thinking too difficult. But I get it now, thanks!
dpb
dpb 2022년 2월 15일
Understand...is easy to do when still learning one's way around in MATLAB.
I've observed it is the penchant to also want to create new, external variables from the table containing the data to work with instead of using the table reference to the data in the table directly. As a general practice, try to avoid making unneccessary copies of data you already have; there's an extensive section in the documentation on tables on how to reference table data that is invaluable and mandatory reading to use tables effectively -- and for disparate data types and convenience in higher-level coding abstraction, the table is about the alpha dog in the pack of tools available in MATLAB.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

DGM
DGM 2022년 2월 9일
편집: DGM 2022년 2월 9일
Create the masks only over the relevant columns. Then use a logical combination of the masks to select the entries from the first column.
T = {1180, 'Trial 1', 'yes';
1150, 'Trial 1', [];
860, 'Trial 1', 'yes';
1350, 'Trial 2', 'yes';
940, 'Trial 2', 'yes'};
maskt1 = strcmpi(T(:,2),'trial 1');
maskt2 = strcmpi(T(:,2),'trial 2');
maskyn = strcmpi(T(:,3),'yes');
maskedvalues1 = cell2mat(T(maskt1 & maskyn,1))
maskedvalues1 = 2×1
1180 860
maskedvalues2 = cell2mat(T(maskt2 & maskyn,1))
maskedvalues2 = 2×1
1350 940

카테고리

Help CenterFile Exchange에서 Whos에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by