R中的排序列联表

pca*_*upo 4 sorting r

我有一个数据框 (df)

structure(list(key = 1:10, x = structure(c(1L, 1L, 1L, 2L, 3L, 
4L, 5L, 5L, 5L, 5L), .Label = c("x1", "x2", "x3", "x4", "x5"), class = "factor"), 
    y = structure(c(2L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L), .Label = c("no", 
    "yes"), class = "factor")), .Names = c("key", "x", "y"), class = "data.frame", row.names = c(NA, -10L))
Run Code Online (Sandbox Code Playgroud)

当我创建一个列联表时,table(df$x, df$y)我得到了这个:

     no yes
  x1  1   2
  x2  0   1
  x3  1   0
  x4  1   0
  x5  1   3
Run Code Online (Sandbox Code Playgroud)

但我想在yes列上排序输出,所以输出看起来像这样: no yes

    no  yes
  x5  1   3
  x1  1   2
  x2  0   1
  x3  1   0
  x4  1   0
Run Code Online (Sandbox Code Playgroud)

我一直在网上搜索一个简单的答案,但我很惊讶找不到任何答案。

MrF*_*ick 5

您可以像在 R 中对矩阵或 data.frame 进行排序一样对表进行排序。

tt<-with(df, table(x,y))
tt[order(tt[,2], decreasing=T),]

#     y
# x    no yes
#   x5  1   3
#   x1  1   2
#   x2  0   1
#   x3  1   0
#   x4  1   0
Run Code Online (Sandbox Code Playgroud)