我正在尝试在MatLab中寻找一个类似于R软件包“reshape2”中的“melt”函数,使得每个变量都会重复行标题并堆叠在一起。
e.g.:
如果我有一个矩阵
A 1 2 3
B 4 5 6
C 7 8 9
我想将其更改为
A 1
A 2
A 3
B 4
B 5
B 6
C 7
C 8
C 9
除了使用for()循环逐对遍历每个列之外,是否有可以执行此操作的函数?
非常感谢, KRB
我正在尝试在MatLab中寻找一个类似于R软件包“reshape2”中的“melt”函数,使得每个变量都会重复行标题并堆叠在一起。
e.g.:
如果我有一个矩阵
A 1 2 3
B 4 5 6
C 7 8 9
我想将其更改为
A 1
A 2
A 3
B 4
B 5
B 6
C 7
C 8
C 9
除了使用for()循环逐对遍历每个列之外,是否有可以执行此操作的函数?
非常感谢, KRB
Matlab有针对表格的stack
和unstack
函数,类似于melt
和cast
。可以尝试以下代码:
groups = {'A'; 'B'; 'C'};
A1 = [1; 4; 7];
A2 = [2; 5; 8];
A3 = [3 ; 6; 9];
T = table(groups, A1, A2, A3)
TLong = stack(T, 2:4)
这提供了
TLong =
groups A1_A2_A3_Indicator A1_A2_A3
______ __________________ ________
'A' A1 1
'A' A2 2
'A' A3 3
'B' A1 4
'B' A2 5
'B' A3 6
'C' A1 7
'C' A2 8
'C' A3 9
table
。