我有一个数据框 (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))

当我用 table(df$x, df$y) 创建一个列联表时,我得到了这个:
     no yes
  x1  1   2
  x2  0   1
  x3  1   0
  x4  1   0
  x5  1   3

但我想在 yes 列上排序输出,所以输出看起来像这样:
不 是
    no  yes
  x5  1   3
  x1  1   2
  x2  0   1
  x3  1   0
  x4  1   0

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

最佳答案

您可以像在 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

关于r - R中的排序列联表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24433077/

10-11 03:11