R Programming/R Function

grepl 함수 (찾기 기능)

루치아 (Lucia) 2015. 2. 27. 21:31
반응형

현재 프로젝트에 투입되면서 가장 먼저해야하는것이 가맹점이 어떤 브랜드에 속해있는지를 알아야한다.

어떤 브랜드인지를 알수있는 방법은 가맹점명으로 알수가 있는 상황이다.

약 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에서는 "!"를 여집합과 같은 표현으로 쓰이고 있다.


반응형