2015-05-02 23 views
3

我有以下數據集:(樣本)dplyr過濾功能提供了錯誤的數據

Team Job Question Answer 
1 1  1  2    1 
2 1  1  3a   2 
3 1  1  3b   2 
4 1  1  4a   1 
5 1  1  4b   1 

,我有21支球隊因此有許多行。我想過濾器做了實驗中的良好團隊的行(與dplyr包):

q10best <- filter(quest,Team==c(2,4,6,10,13,17,21)) 

但它給我搞砸了的數據,並與許多缺少的行。 在另一方面,當我使用:

q10best <- filter(quest,Team==2 | Team==4 | Team==6 | Team==10 | Team==13 | Team==17 | Team==21) 

它給了我,我想正確的數據集。有什麼不同?我在第一個命令中做錯了什麼? 謝謝

+3

在%c(...)'中使用'Team%'而不是'Team == c(...)'。 '=='的意思完全相同,因此它正在尋找與您的整個角色矢量精確匹配的值。 '%in%'表示尋找屬於這個向量的值。 – scoa

+0

@scoa如果認爲你應該做出答案 – Jaap

回答

5

==檢查兩個對象是否完全相同。您正試圖檢查一個對象(quest$Team的每個元素)是否屬於值列表。正確的做法是使用%in%

q10best <- filter(quest,Team %in% c(2,4,6,10,13,17,21)) 
相關問題