按特定的重复值序列对表进行排序

问题描述 投票:0回答:1

我有一个数据框:

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

r dataframe
1个回答
0
投票

一个简单的方法是将 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
© www.soinside.com 2019 - 2024. All rights reserved.