How to include a wide table's VariableDescriptions as an additiolnal column when stacking the table?
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Simon
 el 21 de Mzo. de 2023
  
I would like to make a wide table's VariableDescriptions as an additional column when I stack the table. I have written some codes to do it. They work (in a dirty manner). Is there a better way?
T = cell2table({'A', 2, 3, 3; 'B', 5, 5, 7}, "VariableNames", {'AB', 'x', 'y', 'z'});
% variable descriptions
T.Properties.VariableDescriptions =  {'AB', 'xdes', 'ydes', 'zdes'};
S = stack(T, 2:4, "IndexVariableName",'xyz', 'NewDataVariableName','value')
% duplicate the table, using the variable descriptions as new variable names.
T2 = T;
T2.Properties.VariableNames = T.Properties.VariableDescriptions;
% stack the second table
S2 = stack(T2, 2:4, "IndexVariableName",'xyzdes', 'NewDataVariableName','value');
% add the descriptions as a new column to the first table
S.xyzdes = S2.xyzdes;
S = movevars(S, "xyzdes", "After", "xyz")
0 comentarios
Respuesta aceptada
  Divyanshu
    
 el 18 de Abr. de 2023
        The key concept used here is of a Map where variable names of the table are keys, and their values are the variable descriptions. For simplicity I have assumed names to be in ‘names’ and descriptions in ‘desc’. 
Here is a demo script of doing the same where a new column is added at the end of the stacked table: 
names = ["x" "y" "z"];
desc = ["xD" "yD" "zD"];
M = containers.Map(names,desc);
col2 = S(:,2);
len = height(col2);
colN = []
for i=1:len
    colN = [colN;string(M(string(col2{i,:})))];
end
colN = table(colN)
S = [S colN]
In the above script S is the stacked table that was created by your code. 
The vector ‘colN’ is the new column vector which holds the descriptions. 
Please refer to the following documentation to get more information about Maps: 
1 comentario
Más respuestas (0)
Ver también
Categorías
				Más información sobre Introduction to Installation and Licensing en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

