How do I unstack/transpose table in Matlab?

21 visualizaciones (últimos 30 días)
MIKHAIL DEREVYANKO
MIKHAIL DEREVYANKO el 31 de Jul. de 2019
Comentada: stone_ward el 21 de Feb. de 2020
I need to unstack/transpose a table but couldn''t do using unstack ot transpose functions. Please see attached file.
  2 comentarios
dpb
dpb el 31 de Jul. de 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.
MIKHAIL DEREVYANKO
MIKHAIL DEREVYANKO el 31 de Jul. de 2019
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?

Iniciar sesión para comentar.

Respuesta aceptada

TADA
TADA el 31 de Jul. de 2019
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'
  4 comentarios
TADA
TADA el 1 de Ag. de 2019
Editada: TADA el 1 de Ag. de 2019
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
stone_ward
stone_ward el 21 de Feb. de 2020
How were you able to do this without defining an aggregation function? I've been trying to use unstack on my table of non-numeric data, which is similar to the example, except that I do happen to have 3 columns of data. Everytime I try to use it, I get an error about needing and aggregation function. When I supply one, I get the error "AGGREGATIONFUNCTION must return a value whose size conforms to elements of hte data variable 'Data'."
Note: Data is my datavar.

Iniciar sesión para comentar.

Más respuestas (1)

MIKHAIL DEREVYANKO
MIKHAIL DEREVYANKO el 1 de Ag. de 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.

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by