我试图在MatLab中找到一个类似于'融合' R包中的函数" reshape2",以便为每个变量重复行标题并堆叠在一起。
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
答案 0 :(得分:2)
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
请注意,您的示例矩阵不能存在于Matlab(或R)中,因为矩阵不能包含字符串或混合类型。如果您想使用内置函数,我建议您将现有的任何结构转换为table
。