MATLAB Answers

0

How do I unstack/transpose table in Matlab?

Asked by MIKHAIL DEREVYANKO on 31 Jul 2019
Latest activity Answered by MIKHAIL DEREVYANKO on 1 Aug 2019
I need to unstack/transpose a table but couldn''t do using unstack ot transpose functions. Please see attached file.

  2 Comments

dpb
on 31 Jul 2019
So show us what you tried and what happened...showing an expected output would help I have no idea what you would want that to be.
sorry for complicating things. the real question is as follows
if i have a table of non-numerical variables
id={'id1';'id1';'id2';'id2';'id2'};
cn={'c1';'c2';'c1';'c2';'c3'};
t=table(id,cn);
%unstack/transpose
t1=unstack(t,'cn','id');
the function unstack returns the following error:
Error using tabular/unstack (line 307)
You must specify AGGREGATIONFUNCTION for multiple rows in non-numeric data.
i have no idea what to input for aggregation function.
the desired output should be like this:
id={'id1';'id2'};
cn={'c1','c2',NaN;'c1','c2','c3'};
t1=table(id,cn);
t1=splitvars(t1);
any ideas what should i change/how to achieve the task?

Sign in to comment.

2 Answers

Answer by TADA
on 31 Jul 2019
 Accepted Answer

unstack groups using a third column, but you can trick it to do what you want by adding a fake third column
id={'id1';'id1';'id2';'id2';'id2'};
cn={'c1';'c2';'c1';'c2';'c3'};
t=table(id,cn,cn,'VariableNames', {'id', 'cn', 'cn_'});
%unstack/transpose
t1=unstack(t,'cn_','cn');
t1 =
2×4 table
id c1 c2 c3
_____ ____ ____ ____
'id1' 'c1' 'c2' ''
'id2' 'c1' 'c2' 'c3'

  3 Comments

Thanks a lot. all works. It's very frustrating that Matlab documentation has nothing on it.
That would be because unstack is not designed at all for this use case.
To be honest, I don't see the point of it. The only thing it may help with is visualising the data. Processing it afterward is going to be a lot more complicated than processing what you started with.
I don't know what the OPs use case really is, but sometimes a good visualization is all the processing you need.
I have to agree that in this case theres no reason to blame the documentation, we are tricking unstack to do something it wasn't exatly intended for

Sign in to comment.


Answer by MIKHAIL DEREVYANKO on 1 Aug 2019

it's nothing to do with the visualisation. I need to pick up correct curves names in a batch validation exercise. it can be done many ways but having a file with aligned discounting curve names for all contracts helps a lot.

  0 Comments

Sign in to comment.