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