将R数据框转换为2维值的矩阵?

3

我有一个矩阵,例如:

> mt <- matrix(1:9, nrow=3, ncol=3)
> dimnames(mt) <- list( c('a','b','c'), c('x','y','z') )
> mt
  x y z
a 1 4 7
b 2 5 8
c 3 6 9

我可以使用以下方法将其转换为表格格式:

> as.data.frame(as.table(mt))
  Var1 Var2 Freq
1    a    x    1
2    b    x    2
3    c    x    3
4    a    y    4
5    b    y    5
6    c    y    6
7    a    z    7
8    b    z    8
9    c    z    9

我的问题是 - 是否有一种干净的方法来反向操作?
2个回答

2

你可以使用:?xtabs:使用公式界面,从交叉分类因子(通常包含在数据框中)中创建一个列联表(可选稀疏矩阵)。

 xtabs(Freq~Var1+Var2,Data)
    Var2
Var1 x y z
   a 1 4 7
   b 2 5 8
   c 3 6 9  

你也可以使用这个:?acsat:根据你想要的是向量/矩阵/数组输出还是数据框输出,使用acast或dcast。数据框最多只能有两个维度。
library(reshape2)
zz <- "Var1 Var2 Freq
1    a    x    1
2    b    x    2
3    c    x    3
4    a    y    4
5    b    y    5
6    c    y    6
7    a    z    7
8    b    z    8
9    c    z    9"
Data <- read.table(text=zz, header = TRUE)

acast(Data, Var1 ~ Var2)
Using Freq as value column: use value.var to override.
  x y z
a 1 4 7
b 2 5 8
c 3 6 9  

1
怎么样,使用reshape2::acast函数:
require(reshape2)
acast(m,Var1~Var2)

#  x y z
#a 1 4 7
#b 2 5 8
#c 3 6 9

提示:你可以使用 reshape2::melt() 函数来实现反向操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接