stringr 패키지 안에 문자열을 찾아서 대체해주는 str_replace함수가 있습니다.
하지만 저 같은 경우, gsub함수가 훨씬 더 쉽게 쓸수 있다고 생각해서 gsub함수를 자주 사용합니다.
gsub함수는 특정 문자열이나 패턴을 찾아서 내가 원하는 문자열로 대체 또는 제거 할 수 있도록 도와주는 함수입니다.
사용법은 아래와 같습니다.
gsub("바꾸고자하는 대상의 text 또는 패턴","대체할 text",text객체)
첫번째 예제는 " " 공백을 "" 제거하는 예제이고
두번째 예제는 " " 공백을 | 로 대체하는 예제이고
세번째 예제는 '언어'라는 단어를 'programming 언어'로 대체하는 예제 입니다.
text<-("R은 매우 쉬운 언어 입니다")
gsub(" ","",text)
gsub(" ","|",text)
gsub("언어","programming언어",text)
크롤링을 하다 보면 아래 예제 코드의 text2와 같이 < > 이런 tag나 \t와 같은 html tag들이 자주 볼 수 있습니다. 이러한 tag들을 제거할때에도 gsub함수를 이용합니다.
첫번째 예제 코드의
<.*?> 는 '< > 안에 있는 모든것'을 의미합니다.
그래서 코드 gsub("<.*?>","",text2) 는 "< > 안에 있는 모든것을 제거해라 " 라는 의미를 지닙니다.
gsub("\t","",text2) 는 \t 를 제거하는 코드겠죠?
제거할게 많을 때에는 세번째 코드로 | 연산자 (or연산자)를 이용해서 한번에 제거 할 수 있습니다.
"<.*?>|\t" 이 코드는 "< >안에 있는 모든 것 또는 \t" 를 의미합니다.
그래서 세번째 코드는 < > tag와 \t 를 한번에 없애는 코드인 것이죠.
text2<-("<tag dddd>\t\t\t R은 쉬운언어에요")
gsub("<.*?>","",text2)
gsub("\t","",text2)
gsub("<.*?>|\t","",text2)
이를 응용해서 아래 코드의 text3에 있는 대괄호 [ ] 안에 있는 것도 없애 보도록 하겠습니다.
두번째 줄의 코드를 이용하면 gsub("[.*?]","",text3) 아래 캡쳐화면처럼 대괄호가 제거되지 않는 모습을 보입니다.
이는 대괄호 [] 가 하나의 text로 인식 되지 않기 때문입니다.
쉽게 말해서 대괄호는 R에서 중요한 역할을 하는 기능을 이미하고 있습니다.
우리는 벡터의 요소나 행렬 또는 list의 요소에 접근할 때에 [] 를 사용해서 접근하죠?
그래서 대괄호 [] 를 문자 그대로 대괄호로 인식하게 하기 위해서는 세번째 코드 gsub("\\[.*?\\]","",text3) 처럼
앞에 \\ 를 붙여 주어야 합니다. 여는 대괄호 [ 와 닫는 대괄호 ] 앞에 모두 \\ 를 붙여주셔야합니다.
아래 캡쳐화면을 보시면 잘 제거가 된 것을 볼 수 있습니다.
이와 마찬가지로 소괄호 ( ) 또한 이렇게 처리를 해주어야합니다. 소괄호 () 또한 R에서 이미 자주 쓰이고 있죠?
c(1, 2, 3) 이렇게 함수 내에 인자를 받을때에 사용합니다.
한번에 대괄호와, 소괄호 모두 지우고 싶을때에는 | 연산자를 활용하면 되겠죠?
text3<-("[R programming] R은 쉬운언어에요 (feat python)")
gsub("[.*?]","",text3)
gsub("\\[.*?\\]","",text3)
gsub("\\(.*?\\)","",text3)
gsub("\\[.*?\\]|\\(.*?\\)","",text3)
추가적으로 문자열 벡터의 앞뒤 공백을 제거해주는 함수는 stringr패키지 안에 있는 str_trim입니다.
문자열을 다루다 보면 자주 사용하는 함수이니, 기억해 두시는게 좋습니다.
www.inflearn.com/course/R-crawling?inst=f6858cb4
www.inflearn.com/course/R-crawling-2?inst=5e8c66cf
www.inflearn.com/course/R-text-mining?inst=6dff45e8
'R프로그래밍' 카테고리의 다른 글
R프로그래밍 - 분류문제에서의 성능지표 (accuracy/precision/recall/F-measure) (1) | 2022.05.23 |
---|---|
R프로그래밍 - 회귀분석에서의 성능 지표 MSE, MAE, MAPE (0) | 2022.05.22 |
R프로그래밍 - NA, Inf, -Inf 데이터 찾는법 (0) | 2020.07.02 |
R프로그래밍 - AND, OR, NOT 연산자 (0) | 2020.07.02 |
R프로그래밍 - 현재 날짜 또는 시간 가져오는 함수 Sys.time / Sys.Date (0) | 2020.07.02 |
댓글