① 데이터 처리하기
# 데이터 프레임 형태로 구조형 변환 df_branch_items_table <- as.data.frame(table(df_branch_items$branch, df_branch_items$product_name)) # 데이터 분석을 위해 데이터 가공 df_branch_items_percent <- df_branch_items_table %>% group_by(df_branch_items_table$Var1) %>% mutate(percent_items = Freq/sum(Freq) * 100) # 주문 비율을 계산해서 열 생성 head(df_branch_items_percent) # percent_items 열이 생성된 것을 확인
* 데이터 테이블로 변환하면 branch는 Var1, product_name은 Var2, 빈도는 Freq로 열 이름이 설정됩니다.
코드를 차례대로 실행하면 결과는 다음과 같습니다.
Var1 Var2 Freq `df_branch_items_table$Var1` percent_items-----새로 만들어진 지점별 아이템 예약 건수 비율 <fct> <fct> <int> <fct> <dbl> 1 강남 JUICE 2 강남 3.85 2 마포 JUICE 1 마포 4.76 3 서초 JUICE 1 서초 5.26 4 강남 PASTA 4 강남 7.69 5 마포 PASTA 2 마포 9.52 6 서초 PASTA 5 서초 26.3
코드 풀이
비율 누적 막대 그래프를 그리기 위해 빈도 교차표를 데이터 프레임 형태로 변환합니다. group_by() 함수를 사용해서 아이템별로 그룹핑했고, mutate() 함수로 메뉴 아이템이 전체에서 차지하는 비율을 계산한 percent_items 열을 추가한 df_branch_items_percent를 생성했습니다.