본문 바로가기

배우기/복습노트[R과 분석]

[실습문제] 2023. 12. 5.(화) (2문제) (로또 번호 생성기, 이전값 가져오기 팁)

728x90
반응형

실습문제 1. 로또 번호 생성기 만들기

1~45번까지 6개를 추출하여라

단, 한 번에 하나의 숫자만 추출이 가능하며, 숫자는 중복될 수 없다. 작은 숫자 순서대로 출력하여라.

 

선생님 풀이와 비슷하게 풀었으나 나는 while문에서 1~1000까지의  횟수 제한을 두었고 선생님은 length가 로또 총 추출개수가 될 때까지 반복하라고 풀이하셨으므로 선생님 풀이 과정을 첨부하겠다.

 

728x90

 

실습문제 2. delivery.csv 파일을 읽고

1) 일자별 총 통화건수를 구하여라.

 

 

2) 일자별 배달콜수에 대한 전일 대비 증감률을 구하여라(단, 첫 날은 0%)

 

위 문제를 풀기 위한 방법 중 이전값을 가져오는 여러 방식이 있다.

첫 번째는 위 풀이에 나온 사용자 정의 함수를 생성하여 가져오는 방법

 

두 번째는 꼼수이지만 아래와 같은 방법이 있다.

c(deli2$통화건수[-1], deli2$통화건수[-28])

 

세 번째 방법으로는 dplyr패키지의 lag 함수이다.

dplyr::lag(x,                # 대상
           n = 1,            # 몇 번째 이전 값 가져올지지
           default = NULL)   # 가져올 값이 없을 때 선언할 값

lag(deli2$통화건수, default = deli2$통화건수[1])

 

마지막 방법으로는 data.table 패키지의 shift 함수이다.

shift(x,                     # 대상                  
      n=1,                   # 몇번째 값을 가져올지
      fill=NA,               # 가져올 값이 없을 때 선언값
      type = c('lag',     # 이전값 가져올 경우
               'lead'))      # 이후값 가져올 경우

 

728x90
반응형