如何在 R 資料框中透過排除特定文字值來篩選資料框?


要基於文字值建立子集,我們可以使用 rowSums 函式,透過將文字等於零的和定義為零,這將幫助我們刪除包含該特定文字值的所有行。例如,如果我們有一個包含 A 的許多列的資料框 df,則可以將 df 中排除 A 的所有行選擇為 -

df[rowSums(df=="A")==0,,drop=FALSE]

示例

 即時演示

考慮以下資料框 -

set.seed(951)
x1<−sample(LETTERS[1:3],20,replace=TRUE)
x2<−sample(LETTERS[1:4],20,replace=TRUE)
x3<−sample(LETTERS[1:5],20,replace=TRUE)
x4<−sample(LETTERS[2:5],20,replace=TRUE)
x5<−sample(LETTERS[3:5],20,replace=TRUE)
df<−data.frame(x1,x2,x3,x4,x5)
df

輸出

  x1 x2 x3 x4 x5
1  A  D  B  C C
2  B  D  D  D D
3  B  A  D  D D
4  B  D  C  D E
5  C  D  C  C C
6  A  D  C  D E
7  B  D  E  B E
8  A  D  E  D C
9  A  B  C  E E
10 C  B  C  B C
11 A  D  D  B D
12 B  C  B  D E
13 A  C  E  E D
14 C  A  D  C E
15 C  C  D  B D
16 A  C  A  D E
17 C  A  B  C E
18 A  A  E  E D
19 B  A  D  D C
20 B  D  C  D C

篩選不包含 A 的行 -

df[rowSums(df=="A")==0,,drop=FALSE]

輸出

  x1 x2 x3 x4 x5
2 B  D  D  D  D
4 B  D  C  D  E
5 C  D  C  C  C
7 B  D  E  B  E
10 C B  C  B  C
12 B C  B  D  E
15 C C  D  B  D
20 B D  C  D  C

篩選不包含 B 的行 -

df[rowSums(df=="B")==0,,drop=FALSE]

輸出

x1 x2 x3 x4 x5
5 C D C C C
6 A D C D E
8 A D E D C
13 A C E E D
14 C A D C E
16 A C A D E
18 A A E E D

篩選不包含 C 的行 -

df[rowSums(df=="C")==0,,drop=FALSE]

輸出

x1 x2 x3 x4 x5
2 B D D D D
3 B A D D D
7 B D E B E
11 A D D B D
18 A A E E D

篩選不包含 D 的行 -

df[rowSums(df=="D")==0,,drop=FALSE]

輸出

x1 x2 x3  x4  x5
9 A  B  C  E  E
10 C B  C  B  C
17 C A  B  C  E

篩選不包含 E 的行 -

df[rowSums(df=="E")==0,,drop=FALSE]

輸出

 x1 x2 x3 x4 x5
1 A  D  B  C C
2 B  D  D  D D
3 B  A  D  D D
5 C  D  C  C C
10 C B  C  B C
11 A D  D  B D
15 C C  D  B D
19 B A  D  D C
20 B D  C  D C

更新於: 2020年11月6日

706 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告