Changing data from long form to short form

조회 수: 8 (최근 30일)
Rachel Nesbit
Rachel Nesbit 2019년 9월 11일
편집: Steven Lord 2019년 9월 12일
Hi all,
I wondered if someone might be able to help - with what might seem like a super easy tast.
I have data in longform i.e. (a simple example of what I have below, example 1), but I ideally need it in short form i.e. one row per participant see example 2.
Example 1.
Participant_ID Trial RT
1 1 342
1 2 346
1 3 534
2 1 242
2 2 131
2 3 531
Example 2.
Participant_ID 1_RT 2_RT 3_RT
1 342 346 534
2 242 131 531
Is there a simple way I can do this?
Thank you in advance,
Rachel

답변 (3개)

Steven Lord
Steven Lord 2019년 9월 12일
편집: Steven Lord 2019년 9월 12일
Participant_ID = [1; 1; 1; 2; 2; 2];
Trial = [1; 2; 3; 1; 2; 3];
RT = [342; 346; 534; 242; 131; 531];
t = table(Participant_ID, Trial, RT);
unstackedTable = unstack(t,'RT','Trial');

Rik
Rik 2019년 9월 11일
You can use the participant ID and trial ID as the indices and either use accumarray or sub2ind to fill the matrix with the values. I would suggest sub2ind if you can guarantee that every combination of trial and participant is unique.

Walter Roberson
Walter Roberson 2019년 9월 11일
Under the assumption that all of the information for each participant is gathered together and that there are exactly the same number of data points per participant, then:
[Particpant_ID(1:number_of_trials:end), reshape(RT, number_of_trials).']

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by