私は2つのデータフレームを持っています。
df1-
col1 col2 col3 col4 col5 name1 A 23 xy name1 A 29 xy name1 B 17 xy name1 A 77 xy
df2-
col1 col2 col3 B17 LL1 Z 193 KK1 A77LO9 Y80LK2
df1 の col2 と col3 が df2 の col1 と col2 と等しくない場合、df1 からこれらの行を返したいと思います。
出力は-
col1 col2 col3 col4 col5 name1 A 23 xy name1 A 29 xy
私が見つけた解決策-
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
}
このソリューションは正常に機能していますが、最初は小さなデータフレームを申請していました。現在、私の df1 には約 10,000 行あり、df2 には約 700 万行あります。過去2日間から実行中です。誰でもこれを行うための迅速な方法を提案できますか?