如何对已排序的组进行分组排序?

5

有一个关于dplyr功能的额外的复杂性问题我一直没有解决。主要是我想在已经排序的组内对第二个组进行排序。

所以我有了这个数据框:

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))) 

我首先按照 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))

但明显缺少一些东西,因为没有组summarize,因此没有分组排序。 使用summarise的其他尝试未区分组1和组2。

谢谢。

1个回答

11

默认情况下,group_byadd=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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接