如何在 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
广告