- orion.staff는 직원들의 근무 정보를 담고 있다.
emp_hire_date는 입사일, emp_term_date 퇴사일을 나타낸다.
이 정보를 가지고 직원들의 총 근무 기간을계산한다.
이때 직군이 Sales인 직원만 (job_title이 Sales를 포함하는) 대상으로 근무 기간을 계산하여 1년 미만을 근무한 직원 (근무일수 365일 미만),
1년 이상 10년이하로 근무한 직원(근무일수 3650일 이하),
10년 이상 근무한 직원(근무일수 3650일 초과)의 수를 계산하여라. (10점)
* Hint: data step과 proc freq를 이용한다.
- orion.staff 데이터셋과 orion.sales 데이터셋을 가지고 다음 조건에 맞는 새로운데이터셋을 생성한다. (10점)
- a) 두 데이터셋에 모두 있는 관찰치만 저장하여 with_sale 데이터셋을 생성하고 staff데이터셋에만 있는 관찰치를 저장하여 nosale 데이터셋을 생성한다.
- b) 생성되는 두 데이터셋은 end_date가 2011년인 관찰치만 저장한다.
- c) with_sale은 변수 employee_id, end_date, country만 저장하고, nosale은employee_id, end_date, country, gender 변수만 저장한다.
* 하나의 스텝으로 프로그램을 작성하면 10점, 두 개 이상의 스텝으로 프로그램을 작성하면 7점
- orion.order_fact 데이터셋에는 주문정보를 가지고 있다.
이 자료를 가지고 2011년에 가장 많은 금액을 주문한 고객 5명에게 회사에서는 사은품을 집으로 보내고자 한다. 고객의 주소정보는 orion.customer에 저장되어 있다.
이를 위한 SAS 프로그램을 다음의 순서에 따라 작성한다.
- a) orion.order_fact 데이터셋을 customer_id로 정렬한다.
- b) retain 명령문이나 sum statement를 사용하여 고객별 total_retail_price의 합계금액을 계산한다.
- c) b단계에서 생성된 데이터셋과 orion.customer 데이터셋을 customer_id 변수를키로 하여 가로결합한다. 이때 customer별 합계 금액, customer_name,customer_address, street_id, street_number를 저장한다.
- d) c)에서 생성된 데이터를 출력한다. 이때 합계금액이 가장 큰 고객 5명만 출력한다.
- a) proc means 프로시져를 수행하여 customer_id별 total_retail_price의 합계 금액을 출력한다. 출력된 합계금액에서 가장 금액이 큰 5명의 고객을 찾아customer_id를 기억한다.
- b) orion.customer 데이터셋을 열어 a)에서 찾은 customer_id를 찾아 해당 고객의customer_name, customer_address, street_id, street_number를 기록한다.
* 정상적인 방법으로 풀면 15점. 쉬운 방법으로 풀면 5점
- A 회사는 올해 연 수입이 $600,000이고 지출은 $1,000,000이다. 매년 수입은 5%씩 증가하고 지출은 3%씩 증가한다고 할 때, 수입이 지출보다 많아지기까지 걸리는 년수를 계산한다. 단 25년이 넘지 않도록 한다. (10점)
- orion.us_newhire를 이용하여 다음 조건에 따라 새로운 데이터셋을 생성하여라. (10점)
- a) ID 변수에 포함되어 있는 “-”를 모두 제거하고 ID 변수는 숫자형 변수로 변환한다.
- b) Telephone 변수는 앞 세자리와 뒤 네자리 사이에 “-”를 추가한 후 문자형 변수로변환한다. c) Birthday 변수는 날짜변수로 변환하고 적절한 날짜 포맷을 할당한다.
- orion.travel_expense는 각 직원의 출장 정보를 가지고 있다. exp1 ~ exp5는 각각Taxi, Bus, Train, Airplane, Car를 사용한 비용을 나타낸다.
- a) orion.travel_expense 데이터셋을 읽어 exp1 ~ exp5가 결측인 데이터를 제외하고데이터를 전치시켜 narrow data set으로 변경한다. exp1 ~ exp5의 값은 amount변수에 저장한다. category 변수를 생성하여 Taxi, Bus, Train, Airplane, Car 중에하나를 저장한다. (7점)
* Hint. category 변수는 1~5를 저장한 후 user-defined format을 생성하여 1~5의값으로 각각 Taxi, Bus, Train, Airplane, Car 중에 하나를 저장한다. b) proc transpose를 수행하여 a)와 유사한 결과를 생성한다. (3점)