从 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 列中不存在的 x 列删除 df1 中的行,请将以下代码添加到上述代码段中 -

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

要删除基于列 Grp 的 df_grp 中的行,而这些行不存在于上述创建的数据框的 df_Sales 的列 Category 中,请将以下代码添加到上述代码段中 -

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