我有一个数据框:
df <- data.frame(col1 = c(1,1,1,1,2,2,2,2,3,3,3,3),
col2 = rep(c("A", "B", "C", "D"), 3))
col1 col2
1 1 A
2 1 B
3 1 C
4 1 D
5 2 A
6 2 B
7 2 C
8 2 D
9 3 A
10 3 B
11 3 C
12 3 D
我想对数据帧重新排序,以便 col2 中的重复序列遵循下一个模式:A、C、B、D。 愿望表是:
df_result <- data.frame(col1 = c(1,1,1,1,2,2,2,2,3,3,3,3),
col2 = rep(c("A", "C", "B", "D"), 3))
col1 col2
1 1 A
2 1 C
3 1 B
4 1 D
5 2 A
6 2 C
7 2 B
8 2 D
9 3 A
10 3 C
11 3 B
12 3 D
一个简单的方法是将 col2 转换为一个因子,并按照您想要的方式重新排序级别。
library(dplyr)
mutate(df, col2=factor(col2, levels=c("A","C","B","D"))) |>
arrange(col1, col2)
col1 col2
1 1 A
2 1 C
3 1 B
4 1 D
5 2 A
6 2 C
7 2 B
8 2 D
9 3 A
10 3 C
11 3 B
12 3 D