我搜索了我的数据结构,但我没有成功。对不起,如果我在搜索过程中遗漏了什么。
这是我的数据
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
有一个简单的方法吗?谢谢你的帮助
答案 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