我有2個數據幀。如果存在於第二個數據幀R中,則排除行
df1-
col1 col2 col3 col4 col5 name1 A 23 x y name1 A 29 x y name1 B 17 x y name1 A 77 x y
df2-
col1 col2 col3 B 17 LL1 Z 193 KK1 A 77 LO9 Y 80 LK2
我想從DF1返回的行如果COL2和DF1的COL3不等於col1和DF2的COL2。
輸出應爲─
col1 col2 col3 col4 col5 name1 A 23 x y name1 A 29 x y
解決方案我發現 -
unique.rows <- function (df1, df2) {
out <- NULL
for (i in 1:nrow(df1)) {
found <- FALSE
for (j in 1:nrow(df2)) {
if (all(df1[i,2:3] == df2[j,1:2])) {
found <- TRUE
break
}
}
if (!found) out <- rbind(out, df1[i,])
}
out
}
該解決方案工作正常,但一開始,我就申請小dataframes。現在我的df1有大約10k行,df2有大約700萬行。它從最近2天開始運行並運行。任何人都可以請建議一個快速的方法來做到這一點