我正在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
最佳答案
因此,在您的情况下,示例输入将是
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
将根据因子级别的顺序返回值。 (许多其他使用因子的函数也是如此)
关于r - 在R中使用table(A,B)后,如何根据特定顺序对列和行进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27368554/