如何通过排除 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
通过在所有列中排除4来加载dplyr包并过滤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