# R을 활용하여 2개의 데이터 테이블을 병합하고 날짜별 누적합 구하기
*본 문제는 모 기업 코딩테스트 시험에서 나온 문제를 제 방식대로 변형한 문제입니다.
데이터 설명
- MEMBER_GROUP : 회원들의 마지막 주문일 데이터
- member_no : 회원 아이디 번호
- group : A/B/C
- A : 마지막 주문일이 2020.06 회원
- B : 마지막 주문일이 2020. 06 이전 회원
- C : 주문 이력이 없는 회원
- ORDER : 회원들의 마지막 주문일 데이터
- order_code : 주문번호
- order_time : 주문시간
- order_pay : 주문금액
- member_no : 회원번호
문제1.
MEMBER_GROUP과 ORDER를 member_no 컬럼을 key로 병합하여 MEMBER_ORDER 객체를 생성하시오.
(단, order_date의 클래스는 Date일 것)
#1 나의 풀이
#문제1
MEMBER_ORDER <- left_join(MEMBER_GROUP,ORDER,by='member_no') %>% mutate(order_date = as.Date(order_time))
문제2.
MEMBER_ORDER에서 각 그룹(group)의 주문일자별 누적 주문액(cum_pay)과 누적 주문수(cum_order_cnt)를 구하시오.
(단, 주문일자별 누적 주문액이란 각 그룹에 대한 주문일자별 누적 주문금액 총합을 의미함.)
#2 나의 풀이
#문제2
MEMBER_ORDER %>%
na.omit() %>%
arrange(group,order_date) %>%
group_by(group,order_date) %>%
summarise(sum_order_pay = sum(order_pay),sum_order_cnt = sum(n())) %>%
group_by(group) %>%
mutate(cum_pay = cumsum(sum_order_pay),cum_order_cnt=cumsum(sum_order_cnt)
- 테이블 내 NA 값들을 제거 (NA를 합할 수 없기에 따로 NA값 대체보다는 제거)
- 그룹의 주문일자별이므로 arrange로 정렬 후 group_by(변수s)로 그룹화
- 누적하기에 앞서 먼저 그룹의 주문일자별로 주문금액과 주문수를 나타내는 sum_변수 생성 ( group_by에 따른 변수 생성을 해줘야하므로 summarise(새로운 변수명 = ~) 사용)
- 다시 그룹별로 묶어준 뒤( group_by) mutate(새로운 변수명 = cumsum(변수)~) 사용하여 그룹의 주문일자별로 누적합 변수를 만들어주면 끝
*포인트 : 바로 그룹의 주문일자별로 누적합을 구한다면 에러가 나타나므로 먼저 sum을 통해 그룹별 합을 만들어주고 그 다음 누적합 구하기
* 해당 문제는 제가 여러 R 관련 코딩테스트를 치르며 시험과 최대한 비슷하게 만든 문제입니다.
저처럼 R을 공부하시는 분들에게 조금의 도움이라도 될까 생각하며 만들었으며 해당 문제의 데이터는 임의의 값임을 명심하시기 바랍니다~
반응형
'Programming > R' 카테고리의 다른 글
[R] 데이터 전처리 - dplyr 패키지 (0) | 2022.04.24 |
---|---|
[R] 반응형 그래프 만들기 plotly, dygraphs (1) | 2021.06.29 |
[R] 통계 분석 및 가설 검정 (t 검정, 상관분석) (0) | 2021.06.27 |
[ R ] 그룹별 누적 합계 구하기 (2) | 2021.04.06 |
[ R ] 그룹별 개체수 묶기 데이터 분석 예제 (0) | 2021.03.28 |
댓글