如何在有序矩阵中转换数据帧?

时间:2012-09-11 14:47:07

标签: r

请输入以下代码:

A <- matrix(11, nrow = 4, ncol = 3)
A[,2] <- seq(119, 122, 1)
A[,3] <- seq(45, 42)
B <- matrix(39, nrow = 4, ncol = 3)
B[,2] <- seq(119, 122, 1)
B[,3] <- seq(35, 32)
C <- matrix(67, nrow = 4, ncol = 3)
C[,2] <- seq(119, 122, 1)
C[,3] <- seq(27, 24)

D <- rbind(A, B, C)

你会得到D这是一个12 x 3矩阵;我想知道从Mat开始获取D的最有效方法。

> Mat
    11 39 67
119 45 35 27
120 44 34 26
121 43 33 25
122 42 32 24

事实上,Mat是由D的第一列和第二列索引的D的最后一列;例如考虑等于45的Mat[1,1]:它来自D的唯一一行,由11和119标识。

我怎么能感受到它?

谢谢,

2 个答案:

答案 0 :(得分:3)

您可以使用xtabs

xtabs(D[,3]~D[,2]+D[,1])
      D[, 1]
D[, 2] 11 39 67
   119 45 35 27
   120 44 34 26
   121 43 33 25
   122 42 32 24

答案 1 :(得分:2)

library(reshape2)
dcast(data.frame(D), X2 ~ X1)