Patients code to text for table

3 views (last 30 days)
Hi All. Cannot get to read numbers from a matrix and make them into a text to be inserted in a table. The latter to be used in a ranova test. For example.
Injection = [1;1;2;2;3]
Table (1:5,x) = ['Upper_limb', 'Upper_limb','Lower_limb','Lower_limb','Back'];
cheers
Eduardo
  1 Comment
Walter Roberson
Walter Roberson on 20 Aug 2018
Is Table intended to be a table() object? Is x intended to be a column number in the table object?
Are you trying to do something like
Injection = [1;1;2;2;3]
Table = table(Injection);
Table(1:5,2) = {'Upper_limb', 'Upper_limb','Lower_limb','Lower_limb','Back'} .';

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 31 Aug 2018
Edited: Stephen23 on 31 Aug 2018
"Lets say that somewhere in a 630x38 matrix there is a "1". I need a table with the same dimensions but where (place) there is a "1" it will now say "Upper_limb" (text)..... same location as in the matrix."
Where X is your matrix:
C = {'Upper_limb', 'Lower_limb', 'Back'};
X = [1,2,1,3,1]
C(X)

More Answers (4)

Luis Eduardo Cofré Lizama
Edited: Walter Roberson on 21 Aug 2018
Thanks Walter, actually more like (probably this is wrong):
for i = 1:5
if Injection (i) == 1
Table (i) == 'Upper_Limb'
elseif Injection (i) == 2
Table (i) == 'Lower_Limb'
end
  1 Comment
Walter Roberson
Walter Roberson on 21 Aug 2018
Injection = [1;1;2;2;3]
limbs = {'Upper_limb', 'Upper_limb','Lower_limb','Lower_limb','Back'} .';
Table = limbs(Injection);
See also categorical()

Sign in to comment.


Ben Morrow
Ben Morrow on 21 Aug 2018

just re-format before calling it

    %lets say 
      Injection = [1;1;2;2;3]
        %Sort into names that you want
        Upper_limb1 = Injection(1);
        Upper_limb2 = Injection(2);
        Lower_limb1 = Injection(3);
        Lower_limb2 = Injection(4);
        Back = Injection(5);
      injTable = table(Upper_limb1, Upper_limb2,Lower_limb1,Lower_limb2,Back)
    %now just call your table as "injTable" when you need it
%--------------------------------------------------------------
    %now lets say its a row of data...
      Injection = [1,1;1,1;2,2;2,2;3,3]
      Injection = transpose(Injection);
        %Sort into names that you want
        Upper_limb1 = Injection(:,1);
        Upper_limb2 = Injection(:,2);
        Lower_limb1 = Injection(:,3);
        Lower_limb2 = Injection(:,4);
        Back = Injection(:,5);
Table = table(Upper_limb1, Upper_limb2,Lower_limb1,Lower_limb2,Back   
    %now just call "Table" for your column table  

Luis Eduardo Cofré Lizama
Edited: Walter Roberson on 21 Aug 2018
Thanks again, however, I think I am not asking in the right way. The output I need is a column in a table that reads. Also considering I have more than 200 1,2 and 3s to replace, I thought in using a loop.
Column title: Injection site
'Upper_limb';
'Upper_limb';
'Lower_limb';
'Lower_limb';
'Back';
I'll append next to it all the values for all the rest of the variables
  1 Comment
Walter Roberson
Walter Roberson on 21 Aug 2018
Injection = [1;1;2;2;3]
limbs = {'Upper_limb', 'Upper_limb','Lower_limb','Lower_limb','Back'} .';
Injection_site = limbs(Injection);
Table = table(Injection_site);

Sign in to comment.


Luis Eduardo Cofré Lizama
Maybe I am still not expressing well what I need. Lets say that somewhere in a 630x38 matrix there is a "1". I need a table with the same dimensions but where (place) there is a "1" it will now say "Upper_limb" (text)..... same location as in the matrix.
Cheeeeers

Community Treasure Hunt

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

Start Hunting!