2020. 1. 18. 00:19 IT/R (데이터전처리대전 따라하기)
R 조건에 따라 조인할 마스터 테이블 변경하기
##호텔에 있는 모든 호텔에 추천 후보 호텔을 연결한 데이터를 작성합시다.
##같은 소규모 지역 단위(small_area_name)에 추천 후보 수가 20건 이상이면 같은 소규모 지역 단위의 호텔을 후보로하고
##같은 소규모 지역 단위의 호텔 건수가 20건 미만이면 대규모 지역단위의 호텔을 추천후보로 함
#small_area_name별로 호텔 수를 카운팅
small_area_mst <- hotel_table %>%
group_by(big_area_name,small_area_name) %>%
summarise(hotel_cnt=n() - 1) %>%
#집약 처리 후 그룹화를 해제한다
##왜하는거지??
ungroup() %>%
# 열 붙이기
mutate(join_area_id=
if_else(hotel_cnt >= 20, small_area_name, big_area_name)) %>%
select(small_area_name,join_area_id,hotel_cnt)
#호텔 테이블에 small_area_mst 테이블을 조인하여 호텔별 join_area_id를 붙인다
base_hotel_mst <-
inner_join(hotel_table,small_area_mst,by='small_area_name') %>%
select(hotel_id,join_area_id)
recommend_hotel_mst <-
#bind_rows : sql의 UNION 같은존재
bind_rows(
hotel_table %>%
rename(rec_hotel_id=hotel_id,join_area_id=big_area_name) %>%
select(join_area_id,rec_hotel_id),
hotel_table %>%
rename(rec_hotel_id=hotel_id,join_area_id=small_area_name) %>%
select(join_area_id,rec_hotel_id)
)
#base_hotel_mst와 recommend_hotel_mst를 조인하여 추천 후보 데이터를 붙인다
inner_join(base_hotel_mst, recommend_hotel_mst,by='join_area_id') %>%
#추천 호텔에서 자신 제외
filter(hotel_id != rec_hotel_id) %>%
select(hotel_id,rec_hotel_id)
'IT > R (데이터전처리대전 따라하기)' 카테고리의 다른 글
R null 값을 평균값으로 보완 (0) | 2020.02.03 |
---|---|
R null 값 찾기, 제거, 치환(nvl) (0) | 2020.02.02 |
R 조인 (0) | 2020.01.12 |
R 순위 구하기 (0) | 2020.01.09 |
R 최빈값 구하기 (1) | 2020.01.08 |