【问题标题】:how to create md5 hash of a column in R?如何在 R 中创建列的 md5 哈希?
【发布时间】:2014-02-10 19:54:02
【问题描述】:

我有一个数据框

ID, VID
 1 , xyz-0001

我想用 VID 列值的 md5 哈希替换 VID

我将如何在 R 中做到这一点?我查看了digest 包,但不知道如何将其放入 R 代码中

谢谢

【问题讨论】:

    标签: r md5


    【解决方案1】:

    另一种选择是安装openssl 包并使用其MD5 散列函数。它是一个矢量化函数,与 digest 不同,因此您不必在其上使用 sapply。

    library(openssl)
    
    df$VID <- md5(df$VID)
    

    这会将 VID 列中的字符替换为其 MD5 哈希等效项。

    注意:此函数要求数据为字符类型,因此如果您想在一列整数上使用它,您需要先使用as.character 函数将它们转换为字符。

    【讨论】:

      【解决方案2】:

      加上redmode的回答:

      library(digest)
      txt <- "hello world"
      hash <- digest(txt, algo="md5", serialize=F)
      hash
      

      [1] "5eb63bbbe01eeed093cb22bb8f5acdc3"

      将序列化选项设置为 FALSE 使您的结果与您从在线哈希生成器(例如 thisthis)获得的结果一致。

      【讨论】:

      • 最简单的答案,我可以确认这是开箱即用的,没有大惊小怪。投赞成票。
      【解决方案3】:

      digest绝对适合这个任务,所以我们首先加载它:

      library(digest)
      

      然后创建/加载/等。测试data.framedf

      txt <-
      "ID,VID
      1,xyz-0001
      2,abc-0987"
      
      df <- read.table(header=T, text=txt, sep=",", stringsAsFactors=F)
      df
      

      初始数据如下:

        ID      VID
      1  1 xyz-0001
      2  2 abc-0987
      

      然后我们可以使用函数digest指定算法:

      df$VID <- sapply(df$VID, digest, algo="md5")
      df
      

      现在我们在df 中对列VID 进行了哈希处理:

        ID                              VID
      1  1 44e3a9cf85f802ef50f18e64e01c5e32
      2  2 c576ff180b2046c1a3ae939766588fd3
      

      【讨论】:

        猜你喜欢
        • 2015-01-05
        • 2017-05-04
        • 2014-07-25
        • 2011-11-29
        • 2012-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多