특정 문자가 포함된 데이터 추출하기 (SQL LIKE문)
예제 데이터 생성
dplyr
을 불러온다.
library(dplyr)
Attaching package: ‘dplyr’ The following objects are masked from ‘package:stats’: filter, lag The following objects are masked from ‘package:base’: intersect, setdiff, setequal, union
data.frame
을 이용해 예제 데이터를 만들어 x
로 저장한다.
x <- data.frame(sales.nm = c('스탑버스', '야타버스', '스톱버튼'),
sales.num = c(1,2,3))
grep
grep
을 사용해 특정문자의 존재 여부를 0
과 1
로 확인한다. 해당 문자가 들어있으면 1
, 없으면 0
이 나온다.
grepl('스', '스스스')
결과 1
이 나온다.
grep('스', '스스스')
[1] 1
grep('스', '가가가')
결과 0
이 나온다.
grep('스', '가가가')
integer(0)
grepl
grepl
을 사용해 특정문자의 존재 여부 TRUE
와 FALSE
로 확인한다. 해당 문자가 들어있으면 TRUE
, 없으면 FALSE
이 나온다.
grepl('스', '스스스')
[1] TRUE
grepl('스', '가가가')
[1] FALSE
데이터에 적용
dplyr
을 사용하기 위해 TRUE/FALSE
를 반환하는 grepl
을 사용한다.
filter
에 grepl
을 넣고 우리가 찾고자 하는 문자를 넣어주면, 문자 위치에 상관없이 해당 문자열의 존재여부만 확인해 데이터를 출력한다.
sales.nm
에 스
가 포함되어 있는 데이터를 추출한다.
x %>% filter(grepl('스', sales.nm))
sales.nm sales.num 1 스탑버스 1 2 야타버스 2 3 스톱버튼 3
sales.nm
에 버스
가 포함되어 있는 데이터를 추출한다.
x %>% filter(grepl('버스', sales.nm))
sales.nm sales.num 1 스탑버스 1 2 야타버스 2
sales.nm
에 스탑
이 포함되어 있는 데이터를 추출한다.
x %>% filter(grepl('스탑', sales.nm))
sales.nm sales.num 1 스탑버스 1
정규표현식
해당 문자로 시작하는 데이터 추출
^
을 이용해 특정 문자열로 시작하는 데이터를 추출한다.
x %>% filter(grepl('^스', sales.nm))
sales.nm sales.num 1 스탑버스 1 2 스톱버튼 3
해당 문자열로 끝나는 데이터 추출
$
을 ^
을 이용해 특정 문자로 끝나는 데이터를 추출한다.
x %>% filter(grepl('스$', sales.nm))
sales.nm sales.num 1 스탑버스 1 2 야타버스 2
판매 데이터를 이용한 실습
판매 데이터를 불러온다.
sales <- read.csv('sales.csv', stringsAsFactors=F,
fileEncoding = 'UTF-8')
unique
unique
를 사용해 점포명 컬럼에 들어있는 데이터를 확인한다.
sales %>% select(점포명) %>% unique
점포명 1 스탑버스 2 키즈랜드 7 레스탑 8 원조한식 9 카페베타 12 원조백반 15 @ 16 전주비빔 37 베타문구
특정 키워드가 포함
sales.nm
(점포명)에서 스탑
이 포함된 데이터를 추출한다.
sales %>% filter(grepl('스탑', 점포명)) %>% head
시 구 성별 점포명 점포코드 연월일 판매건수 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103 2 서울특별시 강남구 남 스탑버스 12AA02 20140101 421 3 서울특별시 강남구 여 스탑버스 12AA02 20140101 413 4 서울특별시 강남구 여 레스탑 110001 20140101 287 5 서울특별시 강남구 남 스탑버스 12AA02 20140101 267 6 서울특별시 강남구 남 레스탑 110001 20140101 71
특정 키워드로 시작
sales.nm
(점포명)에서 스탑
으로 시작하는 데이터를 추출한다.
sales %>% filter(grepl('^스탑', 점포명)) %>% head
시 구 성별 점포명 점포코드 연월일 판매건수 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103 2 서울특별시 강남구 남 스탑버스 12AA02 20140101 421 3 서울특별시 강남구 여 스탑버스 12AA02 20140101 413 4 서울특별시 강남구 남 스탑버스 12AA02 20140101 267 5 서울특별시 강남구 여 스탑버스 12AA02 20140101 348 6 서울특별시 강남구 남 스탑버스 12AA02 20140101 348
특정 키워드로 끝
sales.nm
(점포명)에서 스탑
으로 끝나는 데이터를 추출한다.
sales %>% filter(grepl('스탑$', 점포명)) %>% head
시 구 성별 점포명 점포코드 연월일 판매건수 1 서울특별시 강남구 여 레스탑 110001 20140101 287 2 서울특별시 강남구 남 레스탑 110001 20140101 71 3 서울특별시 강남구 NA 레스탑 110001 20140101 149 4 서울특별시 강남구 여 레스탑 110001 20140101 229 5 서울특별시 강남구 여 레스탑 110001 20140101 450 6 서울특별시 강남구 여 레스탑 110001 20140101 214