我正在探索如何更有效地比较 R 中的两个数据帧,然后我想出了哈希。
我的计划是使用 digest
包中的 digest
为具有相同列的两个数据框中的每一行数据创建哈希,我想哈希应该是相同的任意 2 行相同的数据。
我尝试使用以下代码为每一行数据提供唯一的哈希值:
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()
}
但这很慢。
我比较数据框的方法是否正确?如果是,有什么建议可以加快上面的代码吗?谢谢。
更新
我已将代码更新如下:
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
列。
最佳答案
如果我得到你想要的东西,digest 将直接与 apply 一起工作:
library(digest)
ssi.10q3.v1.hash <- data.frame(uid = 1:nrow(ssi.10q3.v1), hash = apply(ssi.10q3.v1, 1, digest))
关于database - 为R中数据框中的每一行数据创建哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5086794/