【发布时间】:2021-04-01 11:21:23
【问题描述】:
我有一个包含数据的 df,以及每一行的名称。我希望将名称替换为随机字符串/数字,但使用相同的字符串,当名称出现两次或更多次时(例如,下面的 Adam 和 Camille)。
df <- data.frame("name" = c("Adam", "Adam", "Billy", "Camille", "Camille", "Dennis"), "favourite food" = c("Apples", "Banana", "Oranges", "Banana", "Apples", "Oranges"), stringsAsFactors = F)
预期的输出是这样的(随机字符串的外观或长度并不重要)
df_exp <- data.frame("name" = c("xxyz", "xxyz", "xyyz", "xyzz", "xyzz", "yyzz"), "favourite food" = c("Apples", "Banana", "Oranges", "Banana", "Apples", "Oranges"), stringsAsFactors = F)
我在 R 中尝试了几个随机替换函数,但是它们中的每一个都为数据中的每一行创建一个随机字符串,而不是为重复项创建一个单独的字符串,例如。 stri_rand_strings:
library(stringi)
library(magrittr)
library(tidyr)
library(dplyr)
df <- df %>%
mutate(UniqueID = do.call(paste0, Map(stri_rand_strings, n=6, length=c(2, 6),
pattern = c('[A-Z]', '[0-9]'))))
【问题讨论】:
-
您这样做是为了匿名数据吗?如果是这样,您还可以查看“digest”和“anonymizer”包。
-
是的,这就是目的。谢谢,我不知道那些包!
标签: r dataframe random replace dplyr