过滤功能

rac*_*ach 1 r dplyr

对于数据:

    Id    res
    1     9
    1     8
    1     8
    1     6
    1     5
    1     4
    2     6
    2     6
    2     0
    2     0
    2     0
    2     0
Run Code Online (Sandbox Code Playgroud)

我想要每组前四名.我用的时候

dat %>% group_by(Id) %>%
       top_n(4,res)
Run Code Online (Sandbox Code Playgroud)

我明白了

Id    res 
1     9 
1     8 
1     8 
1     6 
2     6
2     6 
2     0 
2     0 
2     0 
2     0
Run Code Online (Sandbox Code Playgroud)

这里需要一种过滤方法.什么是适当的过滤逻辑,所以我只得到前四行(允许绑定)

jal*_*pic 5

据我所知,top_n如果关系会返回更多行.

也许这有帮助吗?

dat %>% group_by(Id) %>% arrange(desc(res)) %>% filter(row_number()<=4)

  Id res
1  1   9
2  1   8
3  1   8
4  1   6
5  2   6
6  2   6
7  2   0
8  2   0
Run Code Online (Sandbox Code Playgroud)