r - 在R中使用table(A,B)后,如何根据特定顺序对列和行进行排序?

标签 r dataframe r-table

我正在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/

相关文章:

r - 我如何删除GGPLOT中的两个图例之一

r - 将均值和标准差应用于数据表的每一列

r - 如何在 R 中的网格上的特定位置排列图?

R:停止另一个函数中的函数

R:根据一天中的时间有效地对数据框进行子集化

r - apply 函数从有序因子的 table() 输出中删除 0 个计数

r - 以 'sweep'的方式将单列矩阵与R中的表组合

python - 如何根据前面的列填充 NaN 值

scala - 重命名 Spark DataFrame 中的嵌套结构列