在矩阵中构建多个数据

时间:2017-06-01 18:44:56

标签: r reshape

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

这是我的数据

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

有一个简单的方法吗?谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

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

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