dplyr如何对已排序组中的组进行排序?

Die*_*ego 5 sorting group-by r dplyr

dplyr功能有一些额外的复杂性,我无法解决.主要是,我想在已排序的组中对第二组进行排序.

所以我有这个data.frame:

a_table <- data.frame(id=1:30, 
    grp1 = sample(LETTERS[1:5], 30, replace=TRUE, prob=c(1,1,2,2,3)), 
    grp2 = sample(letters[6:8], 30, replace=TRUE, prob=c(2,2,3))) 
Run Code Online (Sandbox Code Playgroud)

我首先通过grp1计数条目并对它们进行排序,然后为每个grp1我计算每个的值并对它们grp2进行排序.

我尝试这样做:

a_summary <- a_table %>% 
    group_by(grp1) %>% 
        mutate(frst_count = n()) %>% 
        arrange(desc(frst_count)) %>% 
    group_by(grp2) %>% 
        mutate(scnd_count = n()) %>% 
        arrange(desc(scnd_count))
Run Code Online (Sandbox Code Playgroud)

但显然缺少一些东西,因为没有组summarise,因此没有组排序.其他尝试summarise没有区分组1和组2.

谢谢.

jer*_*ycg 11

默认情况下,group_byhas add = FALSE表示而不是添加第二级分组,而是覆盖第一级,导致错误.

你可以使用:

library(dplyr)
a_table %>% group_by(grp1) %>%
            mutate(frst_count = n()) %>%
            group_by(grp2, add = TRUE) %>%
            mutate(scnd_count = n()) %>%
            arrange(frst_count, scnd_count)
Run Code Online (Sandbox Code Playgroud)