*본 문제는 그룹별 개체수 묶기를 R을 활용하여 코딩하는 문제이며,
모 기업 코딩테스트 시험에서 나온 문제를 제 방식대로 변형한 문제입니다.
데이터 설명
- MEMBER : 회원들의 마지막 주문일 데이터
- member_no : 회원 아이디 번호
- last_buy_date : 마지막 주문일 (NA는 주문하지 않음을 의미)
문제1. MEMBER 내 회원들의 그룹을 아래 기준에 따라 A/B/C로 구분한 결과를 GROUPS 이름의 객체에 저장하시오.
- A : 마지막 주문일이 2020년 5월인 회원
- B : 마지막 주문일이 2020년 5월 이전인 회원
- C : 주문이력이 없는 회원
#1 나의 풀이 in R
#라이브러리 다운로드
library(dplyr); library(tidyr); library(lubridate); library(data.table);
# 데이터 다운로드
MEMBER <- readRDS('DATA1.rds') %>% as_tibble()
#문제1
glimpse(GROUPS) #데이터 확인
GROUPS <- data.table(MEMBER %>%
mutate(group = ifelse(is.na(last_buy_date),"C",
ifelse(last_buy_date<'2020-05-01',"B","A"))) %>%
select(-2))
- 데이터를 간단하게 처리할 수 있는 패키지를 library해주고 glimpse()를 통해 해당 데이터의 특징을 확인
- MEMBER 데이터 테이블에서 pipe operator '%>%'를 사용하여 필요한 데이터를 추출
- 특정 조건별 새로운 변수를 생성해주기 위해 mutate()와 ifelse 구문 사용
- GROUPS 객체 생성
#문제1 결과 예시
*포인트 : 그룹별 변수를 만들 때는 mutate로 변수 생성해주고 ifelse(조건, 변수명,~~)로 조건별 변수명 만들어주기
문제2. 1번에서 만든 객체(GROUPS)를 토대로 회원 그룹(group) A/B/C별 회원수(member_cnt)를 구하라.
#2 나의 풀이 in R
#문제2
GROUP_MEMBER_CNT <- data.table(GROUP %>%
group_by(group) %>%
summarise(member_cnt = n()))
- dplyr 패키지의 '%>%'와 group_by를 활용하여 그룹별로 묶어주기
- summarise(변수 = n())를 통해 그룹별 행의 횟수 만들어주기
#문제2 결과 예시
*포인트 : 그룹별 객체수를 표현할 때는 group_by(그룹변수명)으로 그룹을 묶어주고 summarise(새로운 변수명 = n())로 해당 그룹의 객체수 만들어주기
* 해당 문제는 제가 여러 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.31 |
댓글