Я изучаю, как более эффективно сравнить два кадра данных в R, и я придумываю хэш.
Мой план состоит в том, чтобы создать хэш для каждой строки данных в двух фреймах данных с одинаковыми столбцами, используя digest
в digest
пакете, и я полагаю, что хеш-код должен быть одинаковым для любых двух идентичных строк данных.
Я попытался дать уникальный хеш для каждой строки данных, используя следующий код:
for (loop.ssi in (1:nrow(ssi.10q3.v1)))
{ssi.10q3.v1[loop.ssi,"hash"] <- digest(as.character(ssi.10q3.v1[loop.ssi,]))
print(paste(loop.ssi,nrow(ssi.10q3.v1),sep="/"))
flush.console()
}
Но это очень медленно.
Правильный ли мой подход при сравнении данных? Если да, какие-либо предложения по ускорению кода выше? Спасибо.
UPDATE
Я обновил код, как показано ниже:
ssi.10q3.v1[,"uid"] <- 1:nrow(ssi.10q3.v1)
ssi.10q3.v1.hash <- ddply(ssi.10q3.v1,
c("uid"),
function(df)
{df[,"uid"]<- NULL
hash <- digest(as.character(df))
data.frame(hash=hash)
},
.progress="text")
Я самостоятельно сгенерировал столбец uid
для «уникальной» цели.