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