grepl 함수 (찾기 기능)
현재 프로젝트에 투입되면서 가장 먼저해야하는것이 가맹점이 어떤 브랜드에 속해있는지를 알아야한다.
어떤 브랜드인지를 알수있는 방법은 가맹점명으로 알수가 있는 상황이다.
약 300만개의 가맹점명을 일일이 보면서 할수없기에 키워드를 검색하면서 브랜드를 산출해나가고있다.
EXCEL에서 흔히 CTRL+F를 이용해서 찾고자하는 문서를 찾는다.
R에서 이기능을 하는것이 "grepl"이다.
예제로 우선 데이터셋을 한번 만들어보자
##########################
알파벳이 무작위로 있는 데이터프레임을 만드자.
##########################
sample <- paste(rep(letters,2), rep(letters, each=2), sep="")
x <- letters
x <- x[order(x, decreasing = TRUE)]
sample <- paste(sample, rep(x,2), sep="")
sample <- as.data.frame(cbind(sample, 1:length(sample)))
colnames(sample) <- c("name", "number")
sample <- sample[,c(2,1)]
##########################
number name
1 1 aaz
2 2 bay
3 3 cbx
4 4 dbw
5 5 ecv
6 6 fcu
7 7 gdt
... (마지막에 이렇게 생긴 데이터셋이 만들어질것이다)
##########################
예제1) "c"를 포함하고있는 이름들을 찾고싶다
sample[grepl("c",sample$name),]
sample[grepl("c",sample[,2]),]
# grepl(A,B)에서 A는 검색하고자하는 키워드이다. B는 키워드를 검색하는 구역을 정해주는것이다.
#이번예제에서는 sample$name이라는 벡터에서 "c"를 찾는것이다.
예제2) "c"를 가장앞에 포함하고있는 이름들을 찾고싶다
sample[grepl("^c",sample$name),]
sample[grepl("^c",sample[,2]),]
# 텍스트 데이터를 분석할때는 빠지면 안돼는 공부가 Regular Expression이다.
# "c"앞에있는 "^"이 가장앞을 뜻한다.
예제3) "c"를 가장뒤에 포함하고있는 이름들을 찾고싶다
sample[grepl("c$",sample$name),]
sample[grepl("c$",sample[,2]),]
# "c"뒤에있는 "$"이 가장뒤를 뜻한다.
예제4) "c" 또는 "a"를 포함하고있는 이름들을 찾고싶다
x <- c("c","a")
sample[grepl(paste(x, collapse="|"), sample$name),]
sample[grepl(paste(x, collapse="|"), sample[,2]),]
# collapse="|"는 x란벡터에있는 원소들을 붙여주는 역할을하면서 |(또는)를 사이에 붙여준다.
예제5) "c"를 포함하고있지 않는 이름들을 찾고싶다
sample[!grepl("c",sample$name),]
sample[!grepl("c",sample[,2]),]
# 여기서 달라진건 grepl앞에 "!"표시이다.
# R에서는 "!"를 여집합과 같은 표현으로 쓰이고 있다.