dplyr arrange - 按另一列对组进行排序,然后在每个组内进行排序

dplyr arrange - sort groups by another column and then sort within each group

我有如下数据框

 Customer  OrderNo  Tot_Orders
 aaa       2        3
 aaa       1        3
 aaa       3        3
 bbb       1        1
 ccc       1        2
 ccc       2        2

我想按客户分组,然后按 Tot_Orders 排序,然后我想按每个客户组中的 OrderNo 排序以获得

 Customer  OrderNo  Tot_Orders
 bbb       1        1
 ccc       1        2
 ccc       2        2
 aaa       1        3
 aaa       2        3
 aaa       3        3

如何使用 dplyr group_by 并安排相同的内容?我试过了

 df %>% group_by(Customer) %>% arrange(Tot_Orders)

但这没有帮助。提前致谢!

你可以试试

library(dplyr)
df %>% 
  arrange(Tot_Orders, OrderNo) %>% 
  group_by(Customer)
#   Customer OrderNo Tot_Orders
#1      ccc       1          1
#2      bbb       1          2
#3      bbb       2          2
#4      aaa       1          3
#5      aaa       2          3
#6      aaa       3          3

df1 %>%
    arrange(Tot_Orders, OrderNo) %>% 
    group_by(Customer)
#    Customer OrderNo Tot_Orders
#1      bbb       1          1
#2      ccc       1          2
#3      ccc       2          2
#4      aaa       1          3
#5      aaa       2          3
#6      aaa       3          3

数据

df <- structure(list(Customer = c("aaa", "aaa", "aaa", "bbb", "bbb", 
"ccc"), OrderNo = c(2L, 1L, 3L, 2L, 1L, 1L), Tot_Orders = c(3L, 
3L, 3L, 2L, 2L, 1L)), .Names = c("Customer", "OrderNo", "Tot_Orders"
), class = "data.frame", row.names = c(NA, -6L))

df1 <- structure(list(Customer = c("aaa", "aaa", "aaa", "bbb", "ccc", 
"ccc"), OrderNo = c(2L, 1L, 3L, 1L, 1L, 2L), Tot_Orders = c(3L, 
3L, 3L, 1L, 2L, 2L)), .Names = c("Customer", "OrderNo", "Tot_Orders"
), class = "data.frame", row.names = c(NA, -6L))