重新排列 data.frame 的行名(非字母)

Rearrange rownames of data.frame (non alphabetic)

set0 <- data.frame(A = c("A", "B", "C", "D", "A", "B", "C", "D", "A", "B"),
                   B = c("E", "F", "G", "H", "I", "E", "F", "G", "H", "I"))

set0 <- table(set0)

result:
> set0
   B
A   E F G H I
  A 1 0 0 1 1
  B 1 1 0 0 1
  C 0 1 1 0 0
  D 0 0 1 1 0

我知道,当我想更改列顺序时,我可以使用以下命令:

set0 <- set0[, c(5, 4, 3, 2, 1)]

上面的内容可以按我喜欢的任何方式更改列的顺序。

我正在寻找能够完全相同但行名除外的东西。 有什么想法吗?

在方括号中,列定义在逗号右侧(即您所做的)。如果您还不知道,行定义在逗号的左侧。因此,您可以使用您最喜欢的这些方法之一:

set0[c(4, 3, 2, 1), ]

set0[4:1, ]

set0[rev(seq(nrow(set0))), ]

set0[c("D", "C", "B", "A"), ]

set0[rev(rownames(set0)), ]

#    B
# A   E F G H I
#   D 0 0 1 1 0
#   C 0 1 1 0 0
#   B 1 1 0 0 1
#   A 1 0 0 1 1

您可以使用factor来定义顺序,例如

table(
  transform(
    set0,
    A = factor(A, levels = sort(unique(A), decreasing = TRUE))
  )
)

这给出了

   B
A   E F G H I
  D 0 0 1 1 0
  C 0 1 1 0 0
  B 1 1 0 0 1
  A 1 0 0 1 1