R의 문자열에서 모든 특수 문자를 제거하고 공백으로 바꾸는 방법은 무엇입니까?
제거 할 일부 특수 문자는 다음과 같습니다. ~!@#$%^&*(){}_+:"<>?,./;'[]-=
나는 해봤 regex
와 [:punct:]
패턴하지만 그것은 단지 문장 부호를 제거합니다.
질문 2 : 그리고 다음과 같은 외국어에서 문자를 제거하는 방법 : â í ü Â á ą ę ś ć
?
답변 : [^[:alnum:]]
제거 ~!@#$%^&*(){}_+:"<>?,./;'[]-=
에 사용 [^a-zA-Z0-9]
하고 â í ü Â á ą ę ś ć
, regex
또는 regexpr
기능 을 제거 하는 데 사용 합니다.
답변
원하지 않는 문자를 식별 하려면 정규식 을 사용해야 합니다. 가장 쉽게 읽을 수있는 코드의 경우 기본 R에서도 작동 하지만 패키지 str_replace_all
에서 를 원합니다 .stringr
gsub
정확한 정규식은 수행하려는 작업에 따라 다릅니다. 질문에서 제공 한 특정 문자를 제거 할 수 있지만 모든 구두점 문자를 제거하는 것이 훨씬 쉽습니다.
x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")
(기본 R에 해당하는 값은 gsub("[[:punct:]]", " ", x)
입니다.)
대안은 영숫자가 아닌 모든 문자를 교체하는 것입니다.
str_replace_all(x, "[^[:alnum:]]", " ")
문자, 숫자 또는 문장 부호를 구성하는 정의는 로케일에 따라 약간 씩 다르므로 원하는 것을 정확히 얻기 위해 약간의 실험이 필요할 수 있습니다.
답변
정규식을 사용하여 “미친”문자를 제거하는 대신 ASCII로 변환하면 악센트가 제거되지만 문자는 유지됩니다.
astr <- "Ábcdêãçoàúü"
iconv(astr, from = 'UTF-8', to = 'ASCII//TRANSLIT')
결과적으로
[1] "Abcdeacoauu"
답변
특수 문자를 아포스트로피로 변환하고,
Data <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)
아래 코드는 추가 ” ‘아포스트로피를 제거합니다.
Data <- gsub("''","" , Data ,ignore.case = TRUE)
gsub(..)
특수 문자를 아포스트로피로 바꾸는 기능 사용