У меня есть фрейм данных
ID, VID
1 , xyz-0001
Я хотел бы заменить VID
меткой md5 значения столбца VID
.
Как мне это сделать в R? Я посмотрел на пакет digest
, но не могу понять, как это сделать в R-коде
Спасибо
У меня есть фрейм данных
ID, VID
1 , xyz-0001
Я хотел бы заменить VID
меткой md5 значения столбца VID
.
Как мне это сделать в R? Я посмотрел на пакет digest
, но не могу понять, как это сделать в R-коде
Спасибо
Пакет 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
С добавлением ответа redmode:
library(digest)
txt <- "hello world"
hash <- digest(txt, algo="md5", serialize=F)
hash
[1] "5eb63bbbe01eeed093cb22bb8f5acdc3"
Настройка параметра сериализации FALSE делает ваши результаты согласованными с тем, что вы получите от онлайновых генераторов хэшей, таких как this или this.
Другой вариант - установить пакет openssl
и использовать его функцию хеширования MD5. Это векторизованная функция, так что в отличие от digest
вам не придется использовать spply.
library(openssl)
df$VID <- md5(df$VID)
Это заменит символы в столбце VID их хешированными эквивалентами MD5.
Примечание: эта функция требует, чтобы данные были символьным типом, поэтому, если вы хотите использовать их в столбце целых чисел, вам необходимо сначала преобразовать их в символы с as.character
функции as.character
.