如何在 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+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.