본문 바로가기

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

[실습문제] 2023. 11. 28.(화) (3문제)

728x90
반응형

참고로 이번 필기는 이전 파일을 덮어씌우는 바람에 다 날렸다............ 그냥 내가 다시 풀고 선생님 풀이와 비교해보는 걸로.. 기억 휘발되기 전에 얼른 올려야겠다.

 

 

실습문제 1.disease.txt 파일을 읽고 

1) 동일 테이블 생성 후(dis1) 각 NA 값을 각 컬럼의 최소값으로 수정하여라.

 

2) A형간염의 컬럼 이름을 A간염으로 변경하여라(dis1)

 

 

3) dis에서 NA를 하나라도 포함한 행을 제외하여라

두 가지 풀이 방법이 있는데, 첫 번째 방법이다.

 

NA가 포함됐는지의 여부를 검색하고, NA  합이 0이면, 즉 NA가 없으면 그 행번호를 벡터 형태로 저장하는 것이다.

 

두 번째 풀이방법이다.

A형간염 컬럼 또는 월별 컬럼 또는 콜레라 컬럼 또는.... 모든 컬럼의 NA 유무를 T/F의 형태로 저장한다.

NA가 있을 경우 T로 출력이 되는데, 이 때 반대로 뒤집어 주면서 행 부분에 삽입하여주면 출력된다.

 

선생님께서 한 가지 더 가르쳐주셨는데,

all(is.na(dis[3, ])) 은 전체가 TRUE 이면 TRUE를 리턴하고

any(is.na(dis[3, ])) 은 하나라도 TRUE 이면 TRUE 리턴한다.

이걸 적용해보자.

 

 

728x90

 

 

실습문제 2. professor.csv 파일을 읽고 직급별로 계산되는 급여를 출력하여라.

정교수 = PAY + BONUS * 5 (BONUS가 NA인 경우 PAY + 500)

조교수 = PAY*1.1 + BONUS (BONUS가 NA인 경우 PAY*1.1 + 500)

전임강사 = PAY + 100

 

첫 번째 풀이 방법은 ifelse 함수를 사용한 코드이다.

 

 

두 번째 풀이 방법은 if문을 써서 풀이한 코드이다.

 

나는 두 번째 방식으로 풀었다.

이 코드는 푸는 방법은 알겠는데 다시 풀어보기 너무 귀찮아서, 그대로 코드 복붙 했다.

 

 

3. apply.csv 파일을 읽고 id/passwd 컬럼에서 각각을 분리하여 ID, PASSWD 컬럼을 생성하여라.

단, ADAMS는 비밀번호가 없다.

 

이 풀이도 두 가지 풀이 방법이 있는데 한 가지는 추천하지 않는 방식이다. 나는 역시 추천하지 않은 방식으로 풀었다. 하지 말라는 것만 하는 것 같다. 

 

첫 번째 풀이 방법은, for문으로 정보를 갖는 벡터 생성 후 데이터 프레임을 추가하는 방법이다.

 

 

두 번째 풀이 방법은 for문 내부에서 데이터 프레임을 직접 수정하는 방식으로 추천하지 않는 방식이다.

 

두 번째 방법을 추천하지 않는 이유는, 일단 저 방식은 데이터를 직접적으로 바꾸는 방법이다. 우리는 데이터를 먼저 추출하고 그 데이터가 잘 나왔는지 확인을 한 후 자료에 덮어씌우는 형식으로 진행하여야 하는데, 두 번째 방법처럼 데이터를 처리하게 되면 과정 진행중에 데이터를 바꿔넣어버리다가 작업이 중단되는 경우 또는 자료값이 틀려서 고쳐야 하는 상황이 발생하는 경우 다시 원자료를 생성해야하기 때문이다.

 

내 메모가 전부 사라지면서 의욕상실..  집에 가야겠다.

728x90
반응형