用相应的数字标记 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
我想枚举对象中的字符串,将出现多次的字符串标记为 "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