Попробуйте следующее:
library(tidyverse)
df <- data %>%
select(-A) %>%
group_by(B) %>%
arrange(B, C) %>%
bind_cols(data[, 1]) %>%
select(A, everything()) %>%
ungroup()
df
# A tibble: 7 x 3
A B C
<chr> <chr> <dbl>
1 a1 M_01 191
2 a2 M_01 199
3 b1 M_01 232
4 c1 M_02 324
5 c1 M_02 433
6 d1 M_03 164
7 d2 M_04 288
Данные
data <- tibble::tribble(
~A, ~B, ~C,
"a1", "M_01", 232,
"a2", "M_01", 191,
"b1", "M_01", 199,
"c1", "M_02", 433,
"c1", "M_02", 324,
"d1", "M_03", 164,
"d2", "M_04", 288,
)
data
# A tibble: 7 x 3
A B C
<chr> <chr> <dbl>
1 a1 M_01 232
2 a2 M_01 191
3 b1 M_01 199
4 c1 M_02 433
5 c1 M_02 324
6 d1 M_03 164
7 d2 M_04 288