¿Cómo crear el hash md5 de una columna en R?
(3)
Con una adición a la respuesta de redmode:
library(digest)
txt <- "hello world"
hash <- digest(txt, algo="md5", serialize=F)
hash
[1] "5eb63bbbe01eeed093cb22bb8f5acdc3"
Establecer la opción de serialización en FALSE hace que sus resultados sean consistentes con lo que obtendría de los generadores de hash en línea como este o this .
Tengo un marco de datos
ID, VID
1 , xyz-0001
Me gustaría reemplazar VID
con hash md5 del valor de la columna VID
.
¿Cómo haría eso en R? Miré el paquete de digest
pero no puedo averiguar cómo poner eso en el Código R
Gracias
El digest
paquete es absolutamente adecuado para esta tarea, así que primero lo cargamos:
library(digest)
Entonces crea / carga / etc. prueba data.frame
df
:
txt <-
"ID,VID
1,xyz-0001
2,abc-0987"
df <- read.table(header=T, text=txt, sep=",", stringsAsFactors=F)
df
Los datos iniciales se ven como:
ID VID
1 1 xyz-0001
2 2 abc-0987
Luego podemos usar la función de digest
con el algoritmo especificado:
df$VID <- sapply(df$VID, digest, algo="md5")
df
Ahora tenemos la columna VID
en df
:
ID VID
1 1 44e3a9cf85f802ef50f18e64e01c5e32
2 2 c576ff180b2046c1a3ae939766588fd3
Otra opción es instalar el paquete openssl
y usar su función de hashing MD5. Es una función vectorizada tan diferente a la del digest
por lo que no tendrá que usar sapply en ella.
library(openssl)
df$VID <- md5(df$VID)
Esto reemplazará los caracteres en la columna VID con sus equivalentes hash MD5.
Nota: esta función requiere que los datos sean un tipo de carácter, por lo que si desea usar esto en una columna de enteros, primero deberá convertirlos en caracteres con la función as.character
.