Анонимность данных в R - PullRequest
       4

Анонимность данных в R

0 голосов
/ 15 апреля 2020

Я пытался запустить приведенный ниже код, чтобы замаскировать данные в 2 столбца, но потерпел неудачу с приведенной ниже ошибкой:

setwd("/cloud/project/CX")

Credit_tbl <-read.csv(file = 'Sample_data.csv',sep = ",",stringsAsFactors = FALSE)

anonymize <- function(x, algo="crc32"){
  unq_hashes <- vapply(unique(x), function(object) digest(object, algo=algo), FUN.VALUE="", USE.NAMES=TRUE)
  unname(unq_hashes[x])
}

cols_to_mask <- c("Email","Phone")

Credit_tbl[,cols_to_mask := lapply(.SD, anonymize),.SDcols=cols_to_mask,with=FALSE]

Ошибка:

Ошибка в [.data.frame (Credit_tbl,, := (cols_to_mask, lapply (.SD, anonymize)),: неиспользованные аргументы (.SDcols = cols_to_mask, with = FALSE)

1 Ответ

0 голосов
/ 15 апреля 2020

У вас есть фрейм данных, и вы используете синтаксис data.table.

Преобразование кадра данных в data.table и применение функции.

library(data.table)
library(digest)

cols_to_mask <- c("Email","Phone")

anonymize <- function(x, algo="crc32") {
    sapply(x, function(y) if(y == "" | is.na(y)) "" else digest(y, algo = algo))
}

setDT(Credit_tbl)
Credit_tbl[, (cols_to_mask) := lapply(.SD, anonymize), .SDcols = cols_to_mask]

Без изменения на data.table вы можете применить функцию, используя lapply:

Credit_tbl[cols_to_mask] <- lapply(Credit_tbl[cols_to_mask], anonymize)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...