用相应的数字标记 R 对象中重复的字符串

Mark repeated strings in a R object with their correspondent number

我想枚举对象中的字符串,将出现多次的字符串标记为 "stringX1"、"string2" 等等。

这将是一个输入示例:

strings <- c("stringQ", "stringW", "stringE", "stringQ")

预期输出为:

stringOut <- c("stringQ1", "stringW1", "stringE1", "stringQ2")

请注意 "stringQ" 出现了两次,这就是为什么我期望 "stringQ1" 和 "stringQ2"。

我们可以使用ave

paste0(strings, ave(strings, strings, FUN = seq_along))

或者如果我们从重复元素开始编号

make.unique(strings, sep="")

您可以使用 dplyr 执行此操作,如下所示:

require(dplyr)

strings <- data.frame(string = c("stringQ", "stringW", "stringE", "stringQ"))

strings %>% group_by(string) %>%
  mutate(stringnumber = paste0(string,row_number())) %>%
  ungroup() %>%
  select(stringnumber)

结果:

# A tibble: 4 x 1
stringnumber
<chr>
1     stringQ1
2     stringW1
3     stringE1
4     stringQ2