0
我想使用'dplyr'包來返回數據框中包含任何列中的一些數字或字符值的行。例如,如何使用dplyr中的過濾器在不使用'|'的情況下在多列中查找值
> set.seed(1)
> mydf <- data.frame(matrix(abs(round(rnorm(200), 1)), nrow = 20))
> mydf
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 0.6 0.9 0.2 2.4 0.6 0.6 0.5 1.9 0.4 1.2
2 0.2 0.8 0.3 0.0 0.1 0.0 1.3 1.2 0.2 1.0
3 0.8 0.1 0.7 0.7 1.2 0.9 0.2 1.7 1.1 0.2
4 1.6 2.0 0.6 0.0 1.5 0.2 0.2 0.5 0.9 1.5
5 0.3 0.6 0.7 0.7 0.6 0.7 0.1 1.1 0.6 0.5
6 0.8 0.1 0.7 0.2 0.3 1.8 0.7 0.8 2.2 0.2
7 0.5 0.2 0.4 1.8 1.1 0.7 0.1 2.1 0.3 1.5
8 0.7 1.5 0.8 1.5 0.3 0.9 0.0 0.0 1.4 0.8
9 0.6 0.5 0.1 0.2 0.4 0.4 0.7 1.3 0.1 0.4
10 0.3 0.4 0.9 2.2 0.3 1.7 0.3 1.6 0.2 0.9
11 1.5 1.4 0.4 0.5 0.5 0.6 0.1 0.5 2.3 0.2
12 0.4 0.1 0.6 0.7 1.2 0.5 0.6 0.0 0.1 0.4
13 0.6 0.4 0.3 0.6 1.2 1.4 0.5 0.3 0.5 0.7
14 2.2 0.1 1.1 0.9 0.7 0.7 1.5 0.9 0.1 0.8
15 1.1 1.4 1.4 1.3 1.6 0.2 0.3 1.5 0.3 1.2
16 0.0 0.4 2.0 0.3 0.6 0.4 1.5 1.1 0.0 1.0
17 0.0 0.4 0.4 0.4 1.3 0.3 0.3 1.0 0.8 1.4
18 0.9 0.1 1.0 0.0 0.6 0.3 0.5 0.6 2.1 1.0
19 0.8 1.1 0.6 0.1 1.2 0.5 0.7 1.4 1.0 0.4
20 0.6 0.8 0.1 0.6 0.5 0.2 0.1 1.9 1.2 0.4
雖然我可以過濾的行上的單個列條件如
> mydf %>% filter(X1 %in% c(1.5, 0.2))
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 0.2 0.8 0.3 0.0 0.1 0.0 1.3 1.2 0.2 1.0
2 1.5 1.4 0.4 0.5 0.5 0.6 0.1 0.5 2.3 0.2
> mydf %>% filter(X2 %in% c(1.5, 0.2))
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 0.5 0.2 0.4 1.8 1.1 0.7 0.1 2.1 0.3 1.5
2 0.7 1.5 0.8 1.5 0.3 0.9 0.0 0.0 1.4 0.8
我想篩選基於數據中的所有列的行,而無需使用「|」如下。
> mydf %>% filter(X1 %in% c(1.5, 0.2) | X2 %in% c(1.5, 0.2) | ...)
你的意思是像'是myDF [rowSums(sapply( mydf,'%in%',c(1.5,0.2)))> 0,]'? – A5C1D2H2I1M1N2O1R2T1 2014-10-20 06:54:36
應該在'%in%'附近反引號。 – A5C1D2H2I1M1N2O1R2T1 2014-10-20 06:55:44