web-dev-qa-db-ja.com

カウント付きフィルターの使用

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

私が行った場合:

count(df, StudentID)

次に、2列のdfしか表示されませんが、dfのすべての列を保持したいと思います。だから私はフィルターを使うべきだと思います。

12
Franky

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
22
David Arenburg