database - 为R中数据框中的每一行数据创建哈希值

标签 database r hash

我正在探索如何更有效地比较 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/

相关文章:

javascript - javascript中的哈希表和 HashMap

java - 在 Android Studio Java 中读取数据库标题并显示在 ListView 中

r - 如何从 R data.frame 获取行

r - 使用 docker 托管 R 管道工 API

perl - 如何在不重复二级 key 的情况下打印出复杂的哈希值?

ruby-on-rails - 如何在 Rails 中缓存哈希值?

mysql - 定义用于使用分析的 Web 服务(桌面应用程序)

database - 删除左连接 postgres

php - 需要、选择好的数据库驱动程序的建议

r - 如何使用 **for** 循环清理大型数据集