如何通过排除 R 数据框列中的特定值来过滤行?

r programmingserver side programmingprogramming

要通过排除数据框列中的特定值来过滤行,我们可以使用 dplyr 包的 filter_all 函数以及 all_vars 参数,该参数将选择除包含带有否定的传递值的行之外的所有行。例如,如果我们有一个名为 df 的数据框,并且我们想通过排除值 2 来过滤行,那么我们可以使用命令

df%>%filter_all(all_vars(.!=2))

示例

考虑下面的数据框 −

x1<-rpois(20,5)
x2<-rpois(20,5)
df1<-data.frame(x1,x2)
df1

输出

   x1 x2
1  6  5
2  3  5
3  1  4
4  8  7
5  4  5
6  2  4
7  5  1
8  2  7
9  3  5
10 5  9
11 4 10
12 6  4
13 9  1
14 3  4
15 5  5
16 6  3
17 4  7
18 4  2
19 3  7
20 8  4

加载 dplyr 包并通过排除所有列中的 4 来过滤 df1 的行 −

示例

library(dplyr)
df1%>%filter_all(all_vars(.!=4))

输出

   x1 x2
1  6  5
2  3  5
3  8  7
4  5  1
5  2  7
6  3  5
7  5  9
8  9  1
9  5  5
10 6  3
11 3  7

示例

y1<-rpois(20,2)
y2<-rpois(20,2)
df2<-data.frame(y1,y2)
df2

输出

   y1  y2
1  1   2
2  0   2
3  0   3
4  2   3
5  1   1
6  1   3
7  6   2
8  2   3
9  2   2
10 3   2
11 3   0
12 0   5
13 0   0
14 5   5
15 1   1
16 3   3
17 3   1
18 1   1
19 2   2
20 3   0

通过排除所有列中的 2 来过滤 df2 的行 −

示例

df2%>%filter_all(all_vars(.!=2))

输出

   y1 y2
1  0  3
2  1  1
3  1  3
4  3  0
5  0  5
6  0  0
7  5  5
8  1  1
9  3  3
10 3  1
11 1  1
12 3  0

相关文章