在 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+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告