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


为了通过排除数据框列中的特定值来过滤行,我们可以使用 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

更新于: 2021年3月17日

3K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告