Dummy Variable ased on categorical vars in table

3 views (last 30 days)
hi everyone! I'm tying to create a dummy variable in a table based on two categorical variables. My table contains numerical and categorical variables. I now want to add an additional column with values either zero or one. I have a 27x7 table. My code goes as follows:
Data.DV = zeros(27,1)
for x = 1:27
if Data.BS== 'Total assets' & Data.Bank =='Bank X'
Data.DV =1;
else Data.DV =0;
end
end
However, when I try this I receive the error message 'To assign to or create a variable in a table, the number of rows must match the height of the table.' Could you help me explain how to generate this new dummy? Many thanks ahead! Lea

Answers (3)

Jeff Miller
Jeff Miller on 3 Nov 2018
Since you are using a loop on x to go through the table one row at a time, you have to index the table variables BS, bank, and DV to select out one row at a time, like this:
Data.DV(x) = 1;
Another problem is that you can't compare strings with ==. Instead, you have to use strcmp().

Matthew Worker
Matthew Worker on 4 Nov 2018
Thanks!! Now I tried
Data.DV = zeros(27,1)
for x = 1:27
if strcmp(Data(x).BS, 'Total assets')
Data.DV(x) =1;
else Data.DV(x) =0;
end
end
But it still doesn't work. Instead, I get two new error messages:
"Error using tabular/subsrefParens (line 15) You cannot subscript a table using linear indexing (one subscript) or multidimensional indexing (three or more subscripts). Use a row subscript and a variable subscript.
Error in tabular/numArgumentsFromSubscript (line 59) x = subsrefParens(t,s(1));"

Peter Perkins
Peter Perkins on 6 Nov 2018
Don't use a loop. It's completely unnecessary. And make BS and Bank categorical variables. Then all you need is
Data.DV = (Data.BS == 'Total assets') & (Data.Bank =='Bank X');
That's it.

Categories

Find more on Categorical Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!