0
我有一個具有ID列和數字列的數據框。我想測試每個數字列是否等於某個值,如果不是,則輸出不等於該值的列。dplyr:測試每列是否等於某個值並且輸出列不相等
> df
Source: local data frame [6 x 10]
id c1 c2 c3 c4 c5 c6 c7 c8 c9
(int) (int) (int) (int) (int) (int) (int) (int) (int) (int)
1 1 1 1 1 1 1 1 1 1 4
2 2 1 1 1 1 1 1 1 1 1
3 3 1 1 1 1 1 1 1 1 1
4 4 1 2 1 1 1 1 1 1 1
5 5 1 1 1 1 1 1 1 1 1
6 6 1 1 1 1 2 1 1 1 1
有沒有辦法在dplyr中做到這一點?我可以通過測試每列來完成過濾,但要尋找一個簡單的方法。
library(dplyr)
filter(df, c1 == 1, c2 == 1, c3 == 1, c4 == 1, c5 == 1, c6 == 1, c7 == 1, c8 == 1, c9 ==1)
我正在尋找一個解決方案,不需要我列舉每個列的名稱。
當我翻轉查找具有至少一個不相等的行的條件(如下)時,我仍然需要測試每一列以查看哪一列與指定值不相等。太麻煩了。
filter(df, c1 > 1 | c2 > 1 | c2 > 1
| c4 > 1 | c5 > 1 | c6 > 1 | c7 > 1 | c8 > 1 | c9 > 1)
爲什麼它必須是「dplyr」?爲什麼不只是「哪個」? – A5C1D2H2I1M1N2O1R2T1
我有點困惑。看來你想檢查每個帶數字的列是否有相同的值(即1)。如果是這樣的話,我會做'df [,sapply(df,function(x){any(x!= 1)})]''。但是,當我運行你的'filter'代碼時,你選擇了所有包含'1'的行。我想知道你是否意味着行而不是列。 – jazzurro
是的,這也是一個用例。它可能翻轉到沒有一個是零。我正在尋找一種解決方案,不需要我列舉每個列名稱。 – Gopala