Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的数据匿名化_R - Fatal编程技术网

R中的数据匿名化

R中的数据匿名化,r,R,我试图运行以下代码以屏蔽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(ob

我试图运行以下代码以屏蔽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]
setwd(“/cloud/project/CX”)

Credit\u tbl您有一个数据帧,并且您正在使用
data.table
语法

将dataframe转换为
数据表
,并应用该函数

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]

请使用
dput
添加数据,并显示相同数据的预期输出。请阅读有关和如何给出.Credit\u tbl的信息,但在
[.data.frame
中出现以下错误失败(Credit\u tbl,
:=
(cols\u to\u mask,lapply(.SD,匿名)),:未使用的参数(.SDcols=cols\u to\u mask,with=FALSE)谢谢Ronak,我已经更改了将dataframe转换为data.table的代码,现在我得到了电子邮件的预期结果,但对于电话号码,所有值都已转换为,如下所示。ID名称电子邮件电话调查1:10 Ravi e9678a9267018fb55f357b79b856d561调查12:20 John 559BFD75952E5C08B637BF59B1E0F1 Survey 2 3:30 Smith 690ef5d2cb4095950c14a20c6e5fee03调查3 4:40 Kevin调查3我们是否需要对电话号码使用不同的算法而不是“crc32”@NPK我认为您的
匿名化功能很复杂。您能尝试更新的答案吗?“crc32”也适用于数字。谢谢Ronak,我尝试过更新的代码,效果很好,但只有一件事我们如何更改代码以应用值不为Null的匿名函数。如果为Null,则保持原样。非常感谢您的支持help@NPK空是指
NA
?如果是,可以使用
sapply(x,函数(y)如果(is.na(y))na else digest(x,algo=algo))
在函数中。Null表示空值,我只想保持原样,因为没有值。我已按如下方式更改代码,现在所有数据都得到相同的加密值,而“na”值仅适用于电子邮件地址,仅匿名
Credit_tbl[cols_to_mask] <- lapply(Credit_tbl[cols_to_mask], anonymize)