R) 전처리 - Filtering-03

R) 전처리 - Filtering-03

특정 사용자 모두가 구매한 물품 목록을 뽑아보려 한다. 필터링을 어떻게 활용하는지 알아보자.

preprocessing_purchase_list.csv 다운받기 [클릭]

데이터 준비

다음과 같이 데이터가 있다고 하자.

item: 상품명
id: 고객 식별자

1
2
3
4
5
6
7
8
9
10
11
12
df = read.csv("preprocessing_purchase_list.csv")
df
## item id
## 1 a 1
## 2 a 2
## 3 b 1
## 4 b 2
## 5 b 3
## 6 b 4
## 7 c 1
## 8 c 3
## 9 c 4

예를 들어 대상 고객 식별자가 1과 3이라고 했을 때 해당 고객이 구매한 상품은 다음과 같이 확인할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
id_target = c(1, 3)
df[df$id %in% id_target, ]
## item id
## 1 a 1
## 3 b 1
## 5 b 3
## 7 c 1
## 8 c 3

unique(df[df$id %in% id_target, "item"])
## [1] "a" "b" "c"

사실상 대상 고객이 구매한 상품을 골라내는 것이라면 여기서 끝났겠지만, 여기서는 대상 고객 모두가 구매한 상품 목록을 추출하는 것이기 때문에 코드를 조금 더 작성해보겠다.

대상 고객 식별자가 2개이기 때문에 “item” 변수가 2번 집계된 경우는 대상 고객이 모두 구매한 상품이라고 할 수 있다.

1
2
3
4
5
6
7
table(df[df$id %in% id_target, "item"])
## a b c
## 1 2 2

table(df[df$id %in% id_target, "item"]) == length(id_target)
## a b c
## FALSE TRUE TRUE

이제 필요한 것은 “b”와 “c” 상품이다. 이를 뽑아내기 위해서 코드를 길게 쓸 수도 있지만 한줄로 끝내는 코드는 다음과 같다.

1
2
unique(df$item)[table(df[df$id %in% id_target, "item"]) == length(id_target)]
## [1] "b" "c"
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×