2

我在R中工作,并通过使用将数据框的两列制成表格

table(A,B)

最终表,称之为TAB有 4 x 4 列。我想根据我想出的其他顺序来订购它们。我想要的 col1-col4 的顺序是在名为 的向量中order

有没有办法将 的列和行重新排序为TAB 的顺序order

TAB
   A  B   C  D 
A  6  0   1  2 
B  3  12  0  1
C  4  5   6  1
D  8  2   8  90

order = c('C','D','A','B')

期望的输出:

TABNew
   C  D   A  B 
C  6  1   4  5 
D  8  90  8  2
A  1  2   6  0
B  0  1   3  12
4

1 回答 1

4

因此,在您的情况下,样本输入将是

dd<-data.frame(
    x=rep(LETTERS[1:4], c(9, 16, 16, 108)),
    y=rep(rep(LETTERS[1:4], 4), c(6, 0, 1, 2, 3,12,0,1,4,5,6,1,8,2,8,90))
)
myord<-c("C","D","A","B")

您可以在事后进行排序

tt<-with(dd, table(x,y))
tt[myord, myord]

#      C  D  A  B
#   C  6  1  4  5
#   D  8 90  8  2
#   A  1  2  6  0
#   B  0  1  3 12

或者您可以为每个因素明确设置级别的顺序(这table()是计数的)

tt<-with(dd, table(factor(x, levels=myord),factor(y, levels=myord)))
tt

#      C  D  A  B
#   C  6  1  4  5
#   D  8 90  8  2
#   A  1  2  6  0
#   B  0  1  3 12

table将根据因子水平的顺序返回值。(许多其他使用因子的函数也是如此)

于 2014-12-08T23:17:46.300 回答