Как создать хеш md5 столбца в R?

У меня есть фрейм данных

ID, VID
 1 , xyz-0001

Я хотел бы заменить VID меткой md5 значения столбца VID.

Как мне это сделать в R? Я посмотрел на пакет digest, но не могу понять, как это сделать в R-коде

Спасибо

Ответ 1

Пакет digest абсолютно подходит для этой задачи, поэтому сначала загружаем его:

library(digest)

Затем создайте /load/etc. test data.frame df:

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

Теперь у нас есть хэшированный столбец VID в df:

  ID                              VID
1  1 44e3a9cf85f802ef50f18e64e01c5e32
2  2 c576ff180b2046c1a3ae939766588fd3

Ответ 2

С добавлением ответа redmode:

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

[1] "5eb63bbbe01eeed093cb22bb8f5acdc3"

Настройка параметра сериализации FALSE делает ваши результаты согласованными с тем, что вы получите от онлайновых генераторов хэшей, таких как this или this.

Ответ 3

Другой вариант - установить пакет openssl и использовать его функцию хеширования MD5. Это векторизованная функция, так что в отличие от digest вам не придется использовать spply.

library(openssl)

df$VID <- md5(df$VID)

Это заменит символы в столбце VID их хешированными эквивалентами MD5.

Примечание: эта функция требует, чтобы данные были символьным типом, поэтому, если вы хотите использовать их в столбце целых чисел, вам необходимо сначала преобразовать их в символы с as.character функции as.character.