Подтвердить что ты не робот

Удалить все специальные символы из строки в R?

Как удалить все специальные символы в заданной строке в R и заменить каждый специальный символ пробелом?

Специальные символы для удаления: [email protected]#$%^&*(){}_+:"<>?,./;'[]-=

regex [:punct:] собирается сделать половину задания.

Question_2: Но как удалить, например, эти символы с иностранных языков: â í ü Â á ą ę ś ć?

Ответ_2: Замените [^[:alnum:]] на [^a-zA-Z0-9] в regex или regexpr:
 regex[^a-zA-Z0-9]

4b9b3361

Ответ 1

Вам нужно использовать регулярные выражения для идентификации нежелательных символов. Для наиболее легко читаемого кода вы хотите str_replace_all из пакета stringr, хотя gsub из базы R. Также работает.

Точное регулярное выражение зависит от того, что вы пытаетесь сделать. Вы могли бы просто удалить те конкретные символы, которые вы задали в вопросе, но гораздо проще удалить все знаки пунктуации.

x <- "[email protected]#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")

(Базовый эквивалент R равен gsub("[[:punct:]]", " ", x).)

Альтернативой является замена всех не-буквенно-цифровых символов.

str_replace_all(x, "[^[:alnum:]]", " ")

Обратите внимание, что определение того, что составляет букву или число или знак пунктуации, немного зависит от вашего языка, поэтому вам может понадобиться немного поэкспериментировать, чтобы получить именно то, что вы хотите.

Ответ 2

Вместо того, чтобы использовать регулярное выражение для удаления этих "сумасшедших" символов, просто преобразуйте их в ASCII, что приведет к удалению акцентов, bu сохранит буквы.

astr <- "Ábcdêãçoàúü"
iconv(astr, to = "ASCII//TRANSLIT")

что приводит к

[1] "Abcdeacoauu"

Ответ 3

Преобразуйте специальные символы в апостроф,

Data  <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)

Ниже код, чтобы удалить дополнительный '' 'апостроф

Data <- gsub("''","" , Data ,ignore.case = TRUE)

Используйте функцию gsub(..) для замены специального символа на апостроф