본문 바로가기
Programming/R

[ R ] 그룹별 개체수 묶기 데이터 분석 예제

by 코딩하는 금융인 2021. 3. 28.

*본 문제는 그룹별 개체수 묶기를 R을 활용하여 코딩하는 문제이며,

모 기업 코딩테스트 시험에서 나온 문제를 제 방식대로 변형한 문제입니다.


데이터 설명

  • MEMBER : 회원들의 마지막 주문일 데이터
    1. member_no : 회원 아이디 번호
    2. 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))
  1. 데이터를 간단하게 처리할 수 있는 패키지를 library해주고 glimpse()를 통해 해당 데이터의 특징을 확인
  2. MEMBER 데이터 테이블에서 pipe operator '%>%'를 사용하여 필요한 데이터를 추출
  3. 특정 조건별 새로운 변수를 생성해주기 위해 mutate()와 ifelse 구문 사용
  4. 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()))
  1. dplyr 패키지의 '%>%'와 group_by를 활용하여 그룹별로 묶어주기
  2. summarise(변수 = n())를 통해 그룹별 행의 횟수 만들어주기

#문제2 결과 예시

*포인트 : 그룹별 객체수를 표현할 때는 group_by(그룹변수명)으로 그룹을 묶어주고 summarise(새로운 변수명 = n())로 해당 그룹의 객체수 만들어주기

 


* 해당 문제는 제가 여러 R 관련 코딩테스트를 치르며 시험과 최대한 비슷하게 만든 문제입니다.

 

저처럼 R 데이터 애널리스트를 준비하시는 사람들에게 조금의 도움이라도 될까 생각하며 만들었으며 해당 문제의 데이터는 임의의 값임을 명심하시기 바랍니다~

반응형

댓글