亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從私有數據創建示例數據集(用不提供信息的占位符替換變量名稱和級別)?

如何從私有數據創建示例數據集(用不提供信息的占位符替換變量名稱和級別)?

慕哥6287543 2019-12-11 11:09:40
為了提供方法的可重現示例,必須經常提供數據集。我不想建立示例數據集,而是希望使用自己的一些數據。但是,此數據無法發布。我希望用不具信息性的占位符(例如V1 .... V5,L1 .... L5)替換變量(列)名稱和因子級別。有自動的方法可以做到這一點嗎?理想情況下,這將在R中完成,接受一個data.frame并生成此匿名data.frame。有了這樣的數據集,只需在腳本中搜索并替換變量名,您便擁有了一個可公開發布的可復制示例。這樣的過程可能會增加在可復制示例中包含適當數據,甚至在問題,評論和錯誤報告中還會包含可復制示例。
查看完整描述

3 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

我不知道是否有被自動執行此功能,但現在沒有;)


## A function to anonymise columns in 'colIDs' 

##    colIDs can be either column names or integer indices

anonymiseColumns <- function(df, colIDs) {

    id <- if(is.character(colIDs)) match(colIDs, names(df)) else colIDs

    for(id in colIDs) {

        prefix <- sample(LETTERS, 1)

        suffix <- as.character(as.numeric(as.factor(df[[id]])))

        df[[id]] <- paste(prefix, suffix, sep="")

    }

    names(df)[id] <- paste("V", id, sep="")

    df

}


## A data.frame containing sensitive information

df <- data.frame(

    name = rep(readLines(file.path(R.home("doc"), "AUTHORS"))[9:13], each=2),

    hiscore = runif(10, 99, 100),

    passwd = replicate(10, paste(sample(c(LETTERS, letters), 9), collapse="")))


## Anonymise it

df2 <- anonymiseColumns(df, c(1,3))


## Check that it worked

> head(df, 3)

           name  hiscore    passwd

1 Douglas Bates 99.96714 ROELIAncz

2 Douglas Bates 99.07243 gDOLNMyVe

3 John Chambers 99.55322 xIVPHDuEW    


> head(df2, 3)

  name hiscore  V3

1   Q1 99.96714 V8

2   Q1 99.07243 V2

3   Q2 99.55322 V9



查看完整回答
反對 回復 2019-12-12
  • 3 回答
  • 0 關注
  • 487 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號