在 R 中移除資料框中存在於另一個數據框中的行。


要移除資料框中存在於另一個數據框中的行,我們可以使用帶單方括號的子集。這種移除將幫助我們根據另一個數據框的列找到資料框中的唯一行。

檢視下面的示例以瞭解如何完成。

示例 1

以下程式碼片段建立了一個示例資料框 -

x<-rpois(20,2)
y<-rpois(20,2)
df1<-data.frame(x,y)
df1

建立了以下資料框

   x y
1  2 0
2  1 2
3  1 3
4  2 1
5  0 0
6  3 3
7  1 3
8  0 2
9  3 2
10 2 0
11 2 1
12 1 6
13 1 2
14 2 1
15 4 5
16 2 2
17 1 4
18 0 1
19 0 1
20 2 2

將以下程式碼新增到上述程式碼片段中 -

x<-rpois(20,2)
y<-rpois(20,2)
df1<-data.frame(x,y)
a<-rpois(20,5)
b<-rpois(20,5)
df2<-data.frame(a,b)
df2

建立了以下資料框

   a b
1  4 0
2  3 6
3  4 6
4  1 3
5  5 3
6  5 7
7  5 2
8  4 6
9  4 6
10 4 3
11 3 6
12 4 4
13 4 2
14 5 2
15 4 3
16 3 7
17 4 6
18 5 3
19 3 3
20 9 3

要在上面建立的資料框上基於不存在於 df2 的 a 列中的 df1 的 x 列移除行,請將以下程式碼新增到上述程式碼片段中 -

x<-rpois(20,2)
y<-rpois(20,2)
df1<-data.frame(x,y)
a<-rpois(20,5)
b<-rpois(20,5)
df2<-data.frame(a,b)
df1[!df1$x %in% df2$a,]

輸出

如果您將所有上述給定的程式碼片段作為單個程式執行,它將生成以下輸出 -

   x y
1  2 0
4  2 1
5  0 0
8  0 2
10 2 0
11 2 1
14 2 1
16 2 2
18 0 1
19 0 1
20 2 2

示例 2

以下程式碼片段建立了一個示例資料框 -

Grp<-sample(LETTERS[1:5],20,replace=TRUE)
Rate<-rpois(20,5)
df_grp<-data.frame(Grp,Rate)
df_grp

建立了以下資料框

 Grp Rate
1  D 6
2  D 3
3  E 7
4  D 6
5  B 6
6  D 3
7  D 3
8  A 3
9  C 2
10 A 4
11 A 7
12 C 7
13 C 5
14 E 7
15 B 7
16 C 6
17 B 6
18 A 4
19 C 6
20 B 1

將以下程式碼新增到上述程式碼片段中 -

Grp<-sample(LETTERS[1:5],20,replace=TRUE)
Rate<-rpois(20,5)
df_grp<-data.frame(Grp,Rate)
Category<-sample(LETTERS[3:7],20,replace=TRUE)
Sales<-rpois(20,10)
df_Sales<-data.frame(Category,Sales)
df_Sales

建立了以下資料框

Category Sales
1    E    12
2    C    11
3    D     9
4    E    13
5    G     5
6    C     9
7    D    14
8    D    11
9    D     8
10   F    11
11   F    17
12   G    15
13   F    12
14   D     9
15   G    13
16   C     9
17   C    12
18   F     7
19   E     7
20   C     8

要在上面建立的資料框上基於不存在於 df_Sales 的 Category 列中的 df_grp 的 Grp 列移除行,請將以下程式碼新增到上述程式碼片段中 -

Grp<-sample(LETTERS[1:5],20,replace=TRUE)
Rate<-rpois(20,5)
df_grp<-data.frame(Grp,Rate)
Category<-sample(LETTERS[3:7],20,replace=TRUE)
Sales<-rpois(20,10)
df_Sales<-data.frame(Category,Sales)
df_grp[!df_grp$Grp %in% df_Sales$Category,]

輸出

如果您將所有上述給定的程式碼片段作為單個程式執行,它將生成以下輸出 -

Grp  Rate
5  B 6
8  A 3
10 A 4
11 A 7
15 B 7
17 B 6
18 A 4
20 B 1

更新於: 2021年11月2日

5K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告