마스터 테이블에서 정보 얻기
레코드 테이블과 마스터 테이블의 결합은 가장 자주 사용되는 결합입니다. 마스터 테이블은 마스터 데이터를 모아둔 테이블을 말하며, 여기서 마스터 데이터는 특정 요소에 대한 공통의 데이터를 모아둔 데이터를 말합니다. 예를 들어 고객 마스터 데이터에 고객별 이름이나 연령, 성별, 주소 등의 정보가 있는 것입니다.
보통 마스터 데이터는 마스터 테이블에서 유일한 ID를 가지는데 이 ID를 데이터 레코드 안에서 가져 데이터 레코드가 대상 마스터 데이터를 ID만으로 표현할 수 있습니다. 즉 고객의 구매 테이블에서 고객의 마스터 ID를 갖도록 해 구매 고객을 나타낼 수 있습니다. 데이터 레코드에 마스터 데이터의 정보를 첨부하고 싶다면 ID를 사용해 결합하면 됩니다. 레코드 테이블과 마스터 테이블의 결합 처리는 JOIN을 사용하여 간단하게 구현할 수 있지만 결합할 테이블의 크기를 가능한 작게 하여 메모리를 작게 사용해야 합니다.
마스터 테이블 결합
데이터셋은 호텔 예약 레코드를 사용합니다. 예약 테이블과 호텔 테이블을 결합해 숙박 인원수가 한 명인 비즈니스호텔의 예약 레코드를 추출해봅시다.
R로 전처리하기
R에는 겨랍 처리를 위한 merge() 함수가 있지만 dplyr 패키지도 join() 함수로 같은 처리를 할 수 있습니다. 게다가 가독성이나 처리 속도 면에서 joun 함수가 더 뛰어나므로 join 함수를 사용합니다.
inner_join() 함수는 내무 결합 함수입니다. 첫 번째와 두 번째 매개변수에 결합할 테이블을 by에 결합 키를 지정하며 결합 조건은 등호(=)로만 설정할 수 있습니다. 이런 결합키를 설정하고 싶다면 by=c("key1", "key2")와 같이 값을 지정할 수 있습니다. 또한 테이블의 열 이름이 다른 키를 결합 키로 지정할 떄는 c("key1_a" = "key2_b")로 지정할 수 있습니다. dplyr 패키지는 inner_join() 함수 외에도 left_join() 함수, right_join() 함수, full_join() 함수 드을 제공합니다. 또한 inner_join() 함수에 by 매개변수를 지정하지 않으면 cross_join으로 처리됩니다.
: inner_join(reserve_tb %>% fillter(people_num == 1),
hotel_tb %>% filter(is_busuness),
by = "hotel_id")
'데이터 분석 > 데이터 전처리' 카테고리의 다른 글
R전처리 - 과거 데이터에서 정보 얻기 (0) | 2021.02.17 |
---|---|
R전처리 - 조건에 따라 결합할 마스터 테이블 변경 (0) | 2021.02.15 |
R전처리 - 순위계산 (0) | 2021.02.11 |
R전처리 - 최빈값 계산 (0) | 2021.02.09 |
분포 계산 (0) | 2021.02.08 |
댓글