【问题标题】:Anonymize data for each distinct row in R [duplicate]匿名化 R 中每个不同行的数据 [重复]
【发布时间】:2019-04-23 04:32:18
【问题描述】:

例子

价值

15   
15   
15   
4   
37   
37   
37  

有三个不同的值,但有 7 行,下面是我想要的。因为我想匿名我的数据。我不断收到错误“替换有 3 行,数据有 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  

【问题讨论】:

标签: r paste anonymize


【解决方案1】:

创建完成这项工作的函数:

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

【讨论】:

  • 感谢您的回复。这对于具有按顺序重复的值的列非常有用。但是对于值不直接相邻并且分散开的列,如何做到这一点?
  • 这样容易多了。只需转换为因子,然后转换为整数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 2017-05-28
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 2015-04-04
相关资源
最近更新 更多