从字符串中删除特殊字符和空格

Removing special characters and spaces from strings

name1 <- "Adam & Eve"
name2 <- "Spartacus"
name3 <- "Fitness and Health"

我想去掉名字之间的所有空格和特殊字符如%&,.和单词and,然后每个字符串大写,所以名字变成:

name1 <- "ADAMEVE"
name2 <- "SPARTACUS"
name3 <- "FITNESSHEALTH"

我们可以使用 sub 删除 and 字符串,然后使用 gsub 删除字母(大写、小写)以外的所有内容 (^) 和将大小写转换为大写 (toupper)

f1 <- function(x) toupper(gsub("[^A-Za-z]", "", sub("and", "", x, fixed = TRUE)))

-测试

> f1(name1)
[1] "ADAMEVE"
> f1(name2)
[1] "SPARTACUS"
> f1(name3)
[1] "FITNESSHEALTH"

受 akrun 回答的启发,我们可以创建一个函数并将其应用于向量:

library(stringr)
my_function <- function(x){
    x <- str_replace_all(x, "[^A-Za-z0-9]","")
    x <- toupper(x)
    x <- str_remove_all(x, "AND")
    return(x)
}

my_function(c(name1, name2,name3))

输出:

[1] "ADAMEVE"       "SPARTACUS"     "FITNESSHEALTH"

您可以将 stringrstr_remove_all() 和“任何非单词字符”的模式 ("\D") 以及单词 "and"(使用单词边界)一起使用这里,\b),然后用 toupper()

全部改成大写
library(stringr)

name1 %>% str_remove_all("\D|\band\b") %>% toupper

如果你想为此定义一个函数,你可以按如下方式进行:

my_function <- function(x) { x %>% str_remove_all ("\D|\band\b") %>% toupper }