过滤功能
Filter function
对于数据:
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
我要每组前四名。
当我使用
dat %>% group_by(Id) %>%
top_n(4,res)
我明白了
Id res
1 9
1 8
1 8
1 6
2 6
2 6
2 0
2 0
2 0
2 0
这里需要一个过滤方法。什么是合适的过滤逻辑,以便我只得到前四行(允许并列)
据我所知top_n
returns更多行如果平局。
也许这有帮助?
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
您也可以简单地使用head
,这里使用data.table
包:
library(data.table)
setDT(df)[, head(res,4), Id]
或根据@Jack Wheeler 正确下划线:
setDT(df)[, .SD[1:4], by = Id]
对于数据:
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
我要每组前四名。 当我使用
dat %>% group_by(Id) %>%
top_n(4,res)
我明白了
Id res
1 9
1 8
1 8
1 6
2 6
2 6
2 0
2 0
2 0
2 0
这里需要一个过滤方法。什么是合适的过滤逻辑,以便我只得到前四行(允许并列)
据我所知top_n
returns更多行如果平局。
也许这有帮助?
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
您也可以简单地使用head
,这里使用data.table
包:
library(data.table)
setDT(df)[, head(res,4), Id]
或根据@Jack Wheeler 正确下划线:
setDT(df)[, .SD[1:4], by = Id]