使用带计数的过滤器

Fra*_*nky 12 r count filter dplyr

我正在尝试使用count()帮助器过滤行.我想要的输出是所有的行map %>% count(StudentID) = 3.

例如,在下面的df中,它应该取出所有具有StudentID 10016和10020的行,因为它们只是这些的2个实例,我想要3.

StudentID StudentGender Grade     TermName      ScaleName TestRITScore
100             M     9    Fall 2010    Language Usage          217
100             M    10    2011-2012    Language Usage          220
100             M     9    Fall 2010    Reading                 210
10016           M     6    Fall 2010    Language Usage          217
10016           M     6    Fall 2010    Mathematics             210
10020           F     7    Fall 2010    Language Usage          210
10020           F     7    Fall 2010    Mathematics             213
10022           F     8    Fall 2010    Language Usage          232
10022           F     9    2011-2012    Language Usage          240
10022           F     8    Fall 2010    Mathematics             242
Run Code Online (Sandbox Code Playgroud)

如果我做:

count(df, StudentID)
Run Code Online (Sandbox Code Playgroud)

然后它只给我一个2列的df,但我想保留我的df的所有列.这就是为什么我认为我应该使用过滤器.

Dav*_*urg 22

我不认为count你在寻找什么.尝试n()改为:

df %>% 
  group_by(StudentID) %>%
  filter(n() == 3)

# Source: local data frame [6 x 6]
# Groups: StudentID
# 
#   StudentID StudentGender Grade  TermName      ScaleName TestRITScore
# 1       100             M     9 Fall 2010 Language Usage          217
# 2       100             M    10 2011-2012 Language Usage          220
# 3       100             M     9 Fall 2010 Reading                 210
# 4     10022             F     8 Fall 2010 Language Usage          232
# 5     10022             F     9 2011-2012 Language Usage          240
# 6     10022             F     8 Fall 2010 Mathematics             242
Run Code Online (Sandbox Code Playgroud)

  • 另一种选择是`df%>%semi_join(df%>%count(StudentID)%>%filter(n> 3))` (6认同)
  • `count` 绝对是最前沿的 `dplyr`,但它的预期目的并不是 OP 所需要的。你说得对。 (2认同)