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

ycl3bljg  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(156)
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)]

上面的内容使得可以以任何我喜欢的方式更改列的顺序。
我正在寻找的东西,使它有可能做完全相同的,但行名。任何想法?

nhaq1z21

nhaq1z211#

在括号中,列被定义在逗号的右边(这就是你所做的)。如果你还不知道,行被定义在逗号的左边。所以你可以使用你最喜欢的方法之一:

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
5cg8jx4n

5cg8jx4n2#

您可以使用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

相关问题