匿名化 R 中每个不同行的数据

Anonymize data for each distinct row in R

例子

价值

15   
15   
15   
4   
37   
37   
37  

有 3 个不同的值,但有 7 行,下面是我想要的。因为我想匿名化我的数据。我一直收到错误 "replacement has 3 rows, data has 7"

这是我正在使用的代码

final_df$Value <- paste("Value",seq(1:length(unique(final_df$Value))))

价值

Value 1
Value 1   
Value 1   
Value 2   
Value 3   
Value 3   
Value 3  

创建完成该工作的函数:

anon <- function(x) {
    rl <- rle(x)$lengths
    ans<- paste("Value", rep(seq_along(rl), rl))
    return(ans)
}

调用函数:

anon(final_df$Value)

结果:

# [1] "Value 1" "Value 1" "Value 1" "Value 2" "Value 3" "Value 3" "Value 3"

概括:

df1 <- mtcars
df1[] <- lapply(df1, anon)
names(df1)    <- paste0("V", seq_along(names(df1)))
rownames(df1) <- NULL

df1