是否有类似的功能“融化”?在Reshape2中的R在MatLab中有效吗?

时间:2016-01-18 23:17:03

标签: r matlab melt

我试图在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

1 个答案:

答案 0 :(得分:2)

Matlab具有stackunstack个函数,这些函数在表上运行,类似于meltcast。像这样的东西会起作用

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