Предположим, ваши данные выглядят так:
df <- data.frame(id = c("A", "B", "C", "A", "B", "C"), value = rnorm(6),
stringsAsFactors = FALSE)
df
#> id value
#> 1 A -0.8238857
#> 2 B -0.1553338
#> 3 C -0.6297834
#> 4 A -0.4616377
#> 5 B 0.1643057
#> 6 C -0.6719061
И ваш список новых строк идентификаторов (которые могут быть созданы случайным образом - см. Сноску) выглядит следующим образом:
newIds <- c("newId1", "newId2", "newId3")
Тогда сначала вы должны убедиться, что ваш столбец id
является фактором:
df$id <- as.factor(df$id)
Тогда вам, вероятно, следует сохранить идентификаторы клиента для безопасного поиска позже
lookup <- data.frame(key = newIds, value = levels(df$id))
lookup
#> key value
#> 1 newId1 A
#> 2 newId2 B
#> 3 newId3 C
Теперь все, что вам нужно сделать перезаписывает уровни факторов:
levels(df$id) <- newIds
df
#> id value
#> 1 newId1 0.7241847
#> 2 newId2 0.4313706
#> 3 newId3 -0.8687062
#> 4 newId1 1.3464852
#> 5 newId2 0.6973432
#> 6 newId3 1.9872338
Примечание: Если вы хотите создать случайные строки для идентификаторов, вы можете сделать это:
sapply(seq_along(levels(df$id)), function(x) paste0(sample(LETTERS, 5), collapse = ""))
#> [1] "TWABF" "YSBUF" "WVQEY"
Создано в 2020-03-02 пакетом Представить (v0.3.0)