我正在尝试了解如何控制 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
函数控制它。
答案 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