2014-10-26 15 views
8

Tôi đang cố gắng lọc hàng bằng trợ giúp count(). Điều tôi muốn là đầu ra là tất cả các hàng có số map %>% count(StudentID) = 3.Sử dụng bộ lọc có số

Ví dụ trong df dưới đây, nó sẽ đưa ra tất cả các hàng với StudentID 10016 và 10020 là họ chỉ có 2 trường hợp của những điều này và tôi muốn 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 

nếu tôi làm:

count(df, StudentID) 

sau đó nó chỉ cung cấp cho tôi một df với 2 cột, nhưng tôi muốn giữ tất cả các cột của df của tôi. đó là lý do tại sao tôi nghĩ rằng tôi nên sử dụng bộ lọc.

Trả lời

15

Tôi không nghĩ rằng count là thứ bạn đang tìm kiếm. Hãy thử n() thay vào đó:

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 
+0

'count' chắc chắn nhất ở cạnh chảy máu 'dplyr' nhưng mục đích của nó không phải là những gì OP cần. Bạn đang tại chỗ. – hrbrmstr

+0

Không, chảy máu cạnh CRAN - http://cran.r-project.org/web/packages/dplyr/dplyr.pdf – hrbrmstr

+0

Không cố gắng để được snarky, nhưng tìm kiếm PDF cho "' đếm ('" – hrbrmstr

Các vấn đề liên quan