Ich versuche, eine glänzende App zu erstellen, die einem Benutzer ermöglicht, zu verschlüsselnde Spalten auszuwählen, wobei die Werte in jeder Zeile bei nachfolgenden Durchläufen der Daten immer übereinstimmen sollten ist dasselbe. I.e. Wenn Kundenname = "John", erhalten Sie immer "A", wenn dieser Prozess ausgeführt wird. Wenn der Kundenname auf "Jon" wechselt, könnten Sie "C" erhalten ... aber wenn Sie wieder zu "John" wechseln, erhalten Sie A erneut. Dies wird verwendet, um sensible Daten für die Analyse zu "maskieren".Digest-Erhalte verschiedene Werte in allen Zeilen, wenn ich nur einen ändere
Darüber hinaus, wenn jemand eine Methode zum 'Entschlüsseln' dieser Spalten durch Speichern eines Schlüssels, der später verwendet werden könnte, ... würde das geschätzt werden.
Eine vereinfachte Version, wie ich bin versucht, diese (verdauen Bibliothek erforderlich) zu erreichen:
test <- data.frame(CustomerName=c("John Snow","John Snow","Daffy Duck","Daffy Duck","Daffy Duck","Daffy Duck","Daffy Duck","Joe Farmer","Joe Farmer","Joe Farmer","Joe Farmer"),
LoanNumber=c("12548","45878","45796","45813","45125","45216","45125","45778","45126","32548","45683"),
LoanBalance=c("458463","5412548","458463","5412548","458463","5412548","458463","5412548","458463","5412548","2484722"),
FarmType=c("Hay","Dairy","Fish","Hay","Dairy","Fish","Hay","Dairy","Fish","Hay","Dairy"))
test[,1] <- sapply(test[,1],digest,algo="sha1")
Beispiel Ausgabe:
CustomerName LoanNumber LoanBalance FarmType
1 5c96f777a14f201a6a9b79623d548f7ab61c7a11 12548 458463 Hay
2 5c96f777a14f201a6a9b79623d548f7ab61c7a11 45878 5412548 Dairy
3 10bf345ab114c20df2d1eedbbe7e7cd6b969db05 45796 458463 Fish
4 10bf345ab114c20df2d1eedbbe7e7cd6b969db05 45813 5412548 Hay
5 10bf345ab114c20df2d1eedbbe7e7cd6b969db05 45125 458463 Dairy
6 10bf345ab114c20df2d1eedbbe7e7cd6b969db05 45216 5412548 Fish
7 10bf345ab114c20df2d1eedbbe7e7cd6b969db05 45125 458463 Hay
8 b0db86a39b9617cef61a8986fd57af7960eec9f4 45778 5412548 Dairy
9 b0db86a39b9617cef61a8986fd57af7960eec9f4 45126 458463 Fish
10 b0db86a39b9617cef61a8986fd57af7960eec9f4 32548 5412548 Hay
11 b0db86a39b9617cef61a8986fd57af7960eec9f4 45683 2484722 Dairy
Modifizierte Datenrahmen (entfernt 'h' in John):
test <- data.frame(CustomerName=c("Jon Snow","Jon Snow","Daffy Duck","Daffy Duck","Daffy Duck","Daffy Duck","Daffy Duck","Joe Farmer","Joe Farmer","Joe Farmer","Joe Farmer"),
LoanNumber=c("12548","45878","45796","45813","45125","45216","45125","45778","45126","32548","45683"),
LoanBalance=c("458463","5412548","458463","5412548","458463","5412548","458463","5412548","458463","5412548","2484722"),
FarmType=c("Hay","Dairy","Fish","Hay","Dairy","Fish","Hay","Dairy","Fish","Hay","Dairy"))
test[,1] <- sapply(test[,1],digest,algo="sha1")
Neue Ausgabe:
CustomerName LoanNumber LoanBalance FarmType
1 2cabeabb3b50e04d3b46ea2c68ab12c7350cd87f 12548 458463 Hay
2 2cabeabb3b50e04d3b46ea2c68ab12c7350cd87f 45878 5412548 Dairy
3 b0187b6ff2322fa86004d4d22cd479f3cdc345d2 45796 458463 Fish
4 b0187b6ff2322fa86004d4d22cd479f3cdc345d2 45813 5412548 Hay
5 b0187b6ff2322fa86004d4d22cd479f3cdc345d2 45125 458463 Dairy
6 b0187b6ff2322fa86004d4d22cd479f3cdc345d2 45216 5412548 Fish
7 b0187b6ff2322fa86004d4d22cd479f3cdc345d2 45125 458463 Hay
8 2127453066c45db6ba7e2f6f8c14d22796c3fd54 45778 5412548 Dairy
9 2127453066c45db6ba7e2f6f8c14d22796c3fd54 45126 458463 Fish
10 2127453066c45db6ba7e2f6f8c14d22796c3fd54 32548 5412548 Hay
11 2127453066c45db6ba7e2f6f8c14d22796c3fd54 45683 2484722 Dairy
Was ich erwartet hätte:
CustomerName LoanNumber LoanBalance FarmType
1 2cabeabb3b50e04d3b46ea2c68ab12c7350cd87f 12548 458463 Hay
2 2cabeabb3b50e04d3b46ea2c68ab12c7350cd87f 45878 5412548 Dairy
3 10bf345ab114c20df2d1eedbbe7e7cd6b969db05 45796 458463 Fish
4 10bf345ab114c20df2d1eedbbe7e7cd6b969db05 45813 5412548 Hay
5 10bf345ab114c20df2d1eedbbe7e7cd6b969db05 45125 458463 Dairy
6 10bf345ab114c20df2d1eedbbe7e7cd6b969db05 45216 5412548 Fish
7 10bf345ab114c20df2d1eedbbe7e7cd6b969db05 45125 458463 Hay
8 b0db86a39b9617cef61a8986fd57af7960eec9f4 45778 5412548 Dairy
9 b0db86a39b9617cef61a8986fd57af7960eec9f4 45126 458463 Fish
10 b0db86a39b9617cef61a8986fd57af7960eec9f4 32548 5412548 Hay
11 b0db86a39b9617cef61a8986fd57af7960eec9f4 45683 2484722 Dairy
Bin ich Missverständnis, wie das funktioniert? Wenn ich dieselbe Logik auf mehrere Spalten anwende, erhalte ich die gleichen Werte für die unveränderte Spalte, aber das Problem bleibt für die Spalte mit geänderten Werten bestehen. Ich habe versucht, die Digest-Funktion zu vektorisieren, nur um sicherzustellen, dass meine Sapply-Funktion nicht das Problem mit den gleichen Ergebnissen war. Irgendwelche Ideen?