重新排列 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
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