Удалить все специальные символы из строки в R?
Как удалить все специальные символы в данной строке в R и заменить каждый специальный символ с пробелом ?
специальные символы для удаления являются : ~!@#$%^&*(){}_+:"<>?,./;'[]-=
regex [:punct:]
собирается сделать половину работы.
Question_2: но как удалить, например, эти символы из иностранных языков:â í ü Â á ą ę ś ć
?
Answer_2 : Заменить [^[:alnum:]]
С [^a-zA-Z0-9]
на regex
или regexpr
:regex[^a-zA-Z0-9]
3 ответа:
вы должны использовать регулярные выражения для идентификации нежелательных символов. Для наиболее легко читаемого кода, Вы хотите
str_replace_all
Сstringr
, хотяgsub
из базы R работает так же хорошо.точное регулярное выражение зависит от того, что вы пытаетесь сделать. Вы можете просто удалить те конкретные символы, которые вы дали в вопросе, но гораздо проще удалить все знаки препинания письмена.
x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever str_replace_all(x, "[[:punct:]]", " ")
(базовый эквивалент R
gsub("[[:punct:]]", " ", x)
.)альтернативой является замена всех не буквенно-цифровых символов.
str_replace_all(x, "[^[:alnum:]]", " ")
обратите внимание, что определение того, что составляет букву или цифру или знак препинания, немного варьируется в зависимости от вашего региона, поэтому вам может потребоваться немного поэкспериментировать, чтобы получить именно то, что вы хотите.
вместо того, чтобы использовать регулярное выражение для удаления этих "сумасшедших" символов, просто преобразуйте их в ASCII, который удалит акценты, но сохранит буквы.
EDIT: как помнится в комментариях, может потребоваться объявить начальную кодировку исходной строки, обычно это будет
UTF-8
astr <- "Ábcdêãçoàúü" iconv(astr, from = 'UTF-8', to = 'ASCII//TRANSLIT')
что приводит к
[1] "Abcdeacoauu"