在 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
广告