在R中替换字母数字字符串

3

我有一个包含字母数字字符串的数据集。我想要将字符串中的数字部分替换为“nnnn”,字母部分替换为“aaaa”。字母和数字部分的长度并不重要。

示例: 期望结果
#100001032218888example1 #nnnnaaaannnn
#1-example-2 #nnnn-aaaa-nnnn

我尝试了这个方法:

  mutate(str_alpha = str_replace_all(col_name, "\\w+", "aaaa"),
         str_num_alpha = str_replace_all(str_alpha, "\\d+", "nnnn"))

我认为我在 "\\w+" 方面出现了错误,因为它也替换了字符串的数字部分。

有人可以帮忙吗?谢谢。

1个回答

2

做相反的操作,即先替换字母,然后再替换数字。

library(stringr)
str_replace_all(str_replace_all(str1, "[[:alpha:]]+", "aaaa"), "\\d+", "nnnn")

-输出

[1] "#nnnnaaaannnn"   "#nnnn-aaaa-nnnn"

或者在单个str_replace_all中使用命名向量

str_replace_all(str1, setNames(c("aaaa", "nnnn"), c("[[:alpha:]]+", "\\d+")))
[1] "#nnnnaaaannnn"   "#nnnn-aaaa-nnnn"

数据

str1 <- c("#100001032218888example1", "#1-example-2")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接