연령대별 (20대 ~ 60대) 카드사, 결제 카테고리, 연간 소득 분포(1인가구 기준), 연간 평균 소비 금액 시각화
필요한 라이브러리 및 데이터 load
library(dplyr) library(ggplot2)#PS_data loadPS_data <-read.csv("C:/R/PS data.csv")#Pay_data load file_paths <-c("C:/R/pay_data1.csv", "C:/R/pay_data2.csv", "C:/R/pay_data3.csv")# 실제 공통된 열 이름으로 변경common_colnames <-c("PANEL_ID", "SMS_REGISTRATION_DATE", "SMS_REGISTRATION_TIME", "APPROVAL_PRICE", "APPROVAL_STORE", "APPROVAL_TYPE", "CARD_PAYMENT_TYPE","BRANDNAME_N", "CATE_LEVEL3", "COMPANY_NAME", "APPROVAL_METHOD", "APPROVAL_UNIT", "APPROVAL_REAL_PRICE", "NUM")# 각 파일을 읽고 열 이름을 맞춘 후 병합Pay_data_list <-lapply(file_paths, function(file) { df <-read.csv(file)# 공통 열 이름으로 변경colnames(df) <- common_colnamesreturn(df)})Pay_data <-do.call(rbind, Pay_data_list)# 2023으로 시작하는 SMS_REGISTRATION_DATE 값을 가진 행만 추출 -> 23년 결제 내역Pay_data <- Pay_data %>%filter(grepl("^2023", SMS_REGISTRATION_DATE))
20대 데이터 추출
# 2023년 기준 20대의 출생년도 범위를 계산start_year_20s_2023 <-2023-29# 20세에서 29세end_year_20s_2023 <-2023-20# 2023년 기준 20대에 해당하는 데이터를 필터링PS_20 <- PS_data %>%filter(X0002 >= start_year_20s_2023 & X0002 <= end_year_20s_2023)# <Pay_data># PS_30와와 패널 ID가 일치하는 행만 Pay_data에서 추출 -> 30대를 선별Pay_data_20 <-semi_join(Pay_data, PS_20, by ="PANEL_ID")
20대 인터넷 서비스 이용 분포
20대 영화
20대 영화 장르 선호 분포도를 확인 (상위 5개)
20대 TV
20대 TV 장르 선호 분포도를 확인 (상위 5개)
20대 라디오
20대 라디오 장르 선호 분포도를 확인 (상위 5개)
20대 미디어 동영상 콘텐츠
20대 미디어 동영상 콘텐츠 선호 분포 확인 (상위 5개)
20대 OTT 서비스
30대 OTT서비스 선호 분포 확인 (상위 5개)
20대 카드사
20대 주 이용 카드사 분포 확인 (상위 5개)
20대 결제 카테고리
20대 결제 카테고리 분포 확인 (상위 5개)
20대 연간 소득분포(1인 가구 기준)
20대 연간 소득 분포 확인 (1인 가구 기준)
30대 데이터 추출
#<Ps_data># 2023년 기준 30대의 출생년도 범위를 계산start_year_30s_2023 <-2023-39# 30세에서 39세 end_year_30s_2023 <-2023-30# 2023년 기준 30대에 해당하는 데이터를 필터링PS_30 <-subset(PS_data, X0002 >= start_year_30s_2023 & X0002 <= end_year_30s_2023)# <Pay_data># PS_30와와 패널 ID가 일치하는 행만 Pay_data에서 추출 -> 30대를 선별Pay_data_30 <-semi_join(Pay_data, PS_30, by ="PANEL_ID")
30대 인터넷 서비스 이용 분포
30대 영화
30대 영화 장르 선호 분포도를 확인 (상위 5개)
30대 TV
30대 TV 장르 선호 분포도를 확인 (상위 5개)
30대 라디오
30대 라디오 장르 선호 분포도를 확인 (상위 5개)
30대 미디어 동영상 콘텐츠
30대 미디어 동영상 콘텐츠 선호 분포 확인 (상위 5개)
30대 OTT 서비스
30대 OTT서비스 선호 분포 확인 (상위 5개)
30대 카드사
30대 주 이용 카드사 분포 확인 (상위 5개)
30대 결제 카테고리
30대 결제 카테고리 분포 확인 (상위 5개)
30대 연간 소득분포(1인 가구 기준)
30대 연간 소득 분포 확인 (1인 가구 기준)
40대 데이터 추출
# 2023년 기준 40대의 출생년도 범위를 계산start_year_40s_2023 <-2023-49# 40세에서 49세end_year_40s_2023 <-2023-40# 2023년 기준 40대에 해당하는 데이터를 필터링PS_40 <-subset(PS_data, X0002 >= start_year_40s_2023 & X0002 <= end_year_40s_2023)# PS_40와 패널 ID가 일치하는 행만 Pay_data에서 추출 -> 40대를 선별Pay_data_40 <-semi_join(Pay_data, PS_40, by ="PANEL_ID")
40대 인터넷 서비스 이용 분포
40대 영화
40대 영화 장르 선호 분포도 확인 (상위5개)
40대 TV
40대 TV 장르 선호 분포도 확인 (상위 5개)
40대 라디오
40대 라디오 장르 선호 분포도 확인 (상위 5개)
40대 미디어 동영상 콘텐츠
40대 미디어 동영상 콘텐츠 선호 분포 확인 (상위 5개)
40대 OTT 서비스
40대 OTT 서비스 선호 분포 확인 (상위 5개)
40대 카드사
40대 주 이용 카드사 분포 확인 (상위 5개)
40대 결제 카테고리
40대 결제 카테고리 분포 확인 (상위 5개)
40대 연간 소득분포
40대 연간 소득 분포 확인 (1인 가구 기준)
50대 데이터 추출
# 2023년 기준 50대의 출생년도 범위를 계산start_year_50s_2023 <-2023-59# 50세에서 59세end_year_50s_2023 <-2023-50# 2023년 기준 50대에 해당하는 데이터를 필터링PS_50 <-subset(PS_data, X0002 >= start_year_50s_2023 & X0002 <= end_year_50s_2023)# PS_50와 패널 ID가 일치하는 행만 Pay_data에서 추출 -> 50대를 선별Pay_data_50 <-semi_join(Pay_data, PS_50, by ="PANEL_ID")
50대 인터넷 서비스 이용 분포
50대 영화
50대 영화 장르 선호 분포도 확인 (상위 5개)
50대 TV
50대 TV 장르 선호 분포도 확인 (상위 5개)
50대 라디오
50대 라디오 장르 선호 분포도 확인 (상위 5개)
50대 미디어 동영상 콘텐츠
50대 미디어 동영상 콘텐츠 선호 분포 확인 (상위 5개)
50대 OTT 서비스
50대 OTT 서비스 선호 분포 확인 (상위 5개)
50대 카드사
50대 주 이용 카드사 분포 확인 (상위 5개)
50대 결제 카테고리
50대 결제 카테고리 분포 확인 (상위 5개)
50대 연간 소득분포
50대 연간 소득 분포 확인 (1인 가구 기준)
60대 데이터 추출
# 2023년 기준 60대의 출생년도 범위를 계산start_year_60s_2023 <-2023-69# 60세에서 69세 end_year_60s_2023 <-2023-60# 2023년 기준 60대에 해당하는 데이터를 필터링PS_60 <-subset(PS_data, X0002 >= start_year_60s_2023 & X0002 <= end_year_60s_2023)# PS_60와 패널 ID가 일치하는 행만 Pay_data에서 추출 -> 60대를 선별Pay_data_60 <-semi_join(Pay_data, PS_60, by ="PANEL_ID")