为每个具有相同唯一字符的列

时间:2015-08-04 18:56:49

标签: r

我有一个字符串列表,如下所示:

"kkv", "ll27", "g998", "g98", "kv"

我想为每个具有相同字符的字符串分配唯一的ID,无论其长度如何。例如," kkv"和" kv"和" g998"和" g98"将具有相同的ID。

编辑:对不起,我应该说完全相同的独特字符。所以" kkv"和" kv"将具有相同的ID,但" kv"和" kv1"不会。

这是一个表格,其输出我喜欢:

"kkv"  1
"ll27" 2
"g998" 3
"g98"  3
"kv"   1

1 个答案:

答案 0 :(得分:1)

包含原始字符串中每个字母之一的排序字符串形成这样的标识符:

y <- c('vkk', 'kkv', 'll27', 'g998', 'g98', 'kv')
sapply(strsplit(y, ''), function(x) paste(sort(unique(x)), collapse=''))
## [1] "kv"  "kv"  "27l" "89g" "89g" "kv" 

要将这些转换为数字,您可以使用因子:

z <- sapply(strsplit(y, ''), function(x) paste(sort(unique(x)), collapse=''))
as.numeric(factor(z))
## [1] 3 3 1 2 2 3