본문 바로가기

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

[실습문제] 2023. 11. 29.(수) (4문제)

728x90
반응형

실습문제 1. emp.csv 파일을 읽고 각 부서를 확인한 후 10번 부서이면 sal 10% 증가, 20번 부서이면 11% 증가, 30번 부서이면 12%증가하도록 출력하여라.

 

이 문제의 경우 반복 객체가 하나인 경우(sapply)와 반복 객체가 여러 개인 경우(mapply)로 풀 수 있는데 나는 반복 객체가 하나인 경우로 풀었다.

 

먼저 반복객체가 하나인 경우 풀이법이며, 학번 입력 시에 증가된 SAL이 출력되도록 코드를 작성하였다.

 

다음 풀이는 반복객체가 여러 개 있을 때 가능한 풀이이다.

이 때에는 mapply를 사용한다.

 

 

실습문제 2. gogak.csv, gift.csv 파일을 읽고 

1) 고객번호를 입력하면 고객의 가용포인트를 출력하는 함수를 생성한 후 모든 고객에 대한 포인트를 출력하여라.

 

그리고 f_point(gogak$GNO) 로 출력하였을 땐 정상처럼 보이지만

gno <- sort(gogak$GNO, decreasing = T)

f_point(gno) 

이렇게 정렬 후 출력하면 비정상 출력되는 이유를 서술하여라.

 

아래는 sorting후 비정상 출력되는 내용이다.

 

이 문제의 의도는 입력받은 값을 하나씩 고객 데이터 프레임에 전달하여 매칭되는 고객 포인트를 가져오기 위함인데, 함수에 벡터 자체를 넣게 되면 단순히 고객번호와 입력받은 벡터를 벡터비교하게 되므로 하나씩 반복하여 비교하는 개념이 아니게 된다.

벡터 대 벡터를 비교하게 되는데 우리의 의도와는 다르게 된다.

벡터 대 벡터를 비교하다보니 같은 위치의 원소끼리 비교하게 되는데, 순서가 달라지게 되면 전혀 쓸모없는 함수가 된다.

 

 

2) 고객번호를 입력하면 고객이 가져갈 수 있는 상품 하나(가장 좋은)를 출력하는 함수를 생성하고 모든 고객에 대하여 정보를 출력하여라.

 

 

 

실습문제 3. 각 학생의 비만여부(20개의 비만여부)를 출력하여라

표준 몸무게보다 큰 경우 과체중, 작은경우 저체중, 같은 경우 표준으로 출력

(표준몸무게 = (키-100)*0.9)

이 문제는 쉬워서 다시 풀진 않았고 그냥 처음 풀었던 풀이 그대로 캡쳐하였다.

sapply와 mapply로 접근하는 두 가지 방법이 있다.

 

 

실습문제 4. 학번을 입력하면 지도교수명을 출력하는 함수를 생성하여라. 

단 지도교수가 없는 경우 지도교수없음으로 출력하여라.

 

 

여기까지 풀이 끝.

728x90
반응형