如何控制R中表格的尺寸?

时间:2014-01-03 17:55:16

标签: r multidimensional-array

我正在尝试了解如何控制 R 列出data.frame的顺序。

set.seed(123)
x<-sample(c(0,1),10,T)
y<-sample(c(0,1),10,T)
z<-sample(c(0,1),10,T)
test<-data.frame(x,y,z)
table(test)

标准格式为:

, , z = 0

   y
x   0 1
  0 0 1
  1 1 0

, , z = 1

   y
x   0 1
  0 0 3
  1 4 1

R data.frame中的外观顺序制表。但是,如何以x,,,y,的级别为条件获得制表?显然data.frame(z,y,x)是一个选项,但如果可能,我想从table函数控制它。

2 个答案:

答案 0 :(得分:3)

这取决于您需要对结果做什么。 ftable函数(flatten的'f')提供了另一种方法:

> ftable(test, row.vars=c(2,1), col.vars=3)
    z 0 1
y x      
0 0   0 0
  1   1 4
1 0   1 3
  1   0 1

答案 1 :(得分:2)

我认为直接从table控制此问题的唯一方法是更改​​变量的显示顺序。另一种选择是使用aperm

> aperm(table(test),perm = c(3,1,2))
, , y = 0

   x
z   0 1
  0 0 1
  1 0 4

, , y = 1

   x
z   0 1
  0 1 0
  1 3 1

等效地:

> table(test[,c(3,1,2)])
, , y = 0

   x
z   0 1
  0 0 1
  1 0 4

, , y = 1

   x
z   0 1
  0 1 0
  1 3 1