在矩阵中构建多个数据

Structuring multiple data in a matrix

我搜索了我的数据结构,但没有成功。对不起,如果我在搜索过程中遗漏了什么。

这是我的数据

id  M1  M2  M3  Q1  Q2  Q3
1   12  13  14  A   B   C
2   13  10  15  D   D   E
3   16  2   16  C   B   A
4   19  11  11  D   A   C
5   9   0   10  B   A   D

我想看如下:

ID  M   Q   V
1   M1  A   12
1   M2  B   13
1   M3  C   14
2   M1  D   13
2   M2  D   10
2   M3  E   15
3   M1  C   16
3   M2  B   2
3   M3  A   16
4   M1  D   19
4   M2  A   11
4   M3  C   11
5   M1  B   9
5   M2  A   0
5   M3  D   10

有没有简单的方法?感谢您的帮助

这是一种使用 reshape2 库的方法,可能适合您。首先,为每个变量子集("M"s 和 "Q"s)融化一次数据。将它们绑定到一个数据框中,然后通过重新排序来完成。

M<-melt(mat, id.vars = "id", 
        measure.vars = c("M1","M2","M3"), 
        variable.name = "M", value.name = "V", )

Q<- melt(mat, id.vars = "id", 
         measure.vars = c("Q1", "Q2", "Q3"), 
         value.name = "Q")[,3]

bound<- cbind(M, Q)
final <- bound[order(bound$id),][,c(1,2,4,3)]

> final
   id  M Q  V
1   1 M1 A 12
6   1 M2 B 13
11  1 M3 C 14
2   2 M1 D 13
7   2 M2 D 10
12  2 M3 E 15
3   3 M1 C 16
8   3 M2 B  2
13  3 M3 A 16
4   4 M1 D 19
9   4 M2 A 11
14  4 M3 C 11
5   5 M1 B  9
10  5 M2 A  0
15  5 M3 D 10