데이터 프레임이 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
col1 col2 col3 B 17 LL1 Z 193 KK1 A 77 LO9 Y 80 LK2
df2- 나는 COL2와 DF1의 COL3이 COL1 및 DF2의 COL2와 동일하지 않은 경우 DF1에서 해당 행을 반환하고자합니다.
출력은
col1 col2 col3 col4 col5 name1 A 23 x y name1 A 29 x y
솔루션을 BE-한다 나는이 솔루션은 잘 작동
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
}
found-하지만 처음에, 나는 작은 dataframes을 신청했다. 이제 내 df1에는 약 10k 개의 행이 있고 df2에는 약 7 백만 개의 행이 있습니다. 지난 2 일간은 달리기 만하고 실행 중입니다. 누구든지이 작업을 수행하는 빠른 방법을 제안 할 수 있습니까?
if (!found) out <- rbind(out, df1[i,])
당신은 지속적으로 개체에 대한 새로운 메모리를 할당하기 위해 운영 체제를 일으키는 data.frame을 성장 : 아마 당신을 물고 무엇