##호텔에 있는 모든 호텔에 추천 후보 호텔을 연결한 데이터를 작성합시다.
##같은 소규모 지역 단위(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
Posted by 소율소희아빠

블로그 이미지
소율소희아빠

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.6
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

최근에 올라온 글

최근에 달린 댓글

글 보관함