====== 제37회 KOBIC 차세대 생명정보학 교육 실습용 R 코드 ====== 이 소스코드는 저자(인하대학교 유동현 교수)의 허락을 받고 공개하는 것이다. 실행환경의 customization과 설명을 위하여 약간의 수정이 이루어진 곳이 있을 수 있다. **R을 이용한 데이터 시각화** 실습에 쓰인 코드는 유충현·홍성학 공저 **R을 활용한 데이터 시각화**(인터넷 교보문고 [[http://www.kyobobook.co.kr/product/detailViewKor.laf?barcode=9788966261420|링크]])에서 저자의 허락을 받고 발췌 정리한 것이다. 실습용 코드 내에 포함된 디렉토리 설정 관련 명령문은 사용자의 환경에 맞게 고쳐야 한다. 모든 실습용 데이터 파일 압축본: {{ :sample_data.zip |}} ===== 1일차: R을 이용한 데이터 핸들링 및 프로그래밍 ===== ==== R의 소개 및 기본 기능 ==== === 연습 문제 === - lars라는 이름의 패키지를 설치하고 불러오시오. - lars 패키지에서 제공되는 함수 및 자료 목록을 출력하시오. - string과 관련된 R 함수를 검색하시오. - rnonm() 함수에 대한 도움말 참조하여 예제 코드를 실행하시오. - [[https://ko.wikipedia.org/wiki/%EC%B2%B4%EC%A7%88%EB%9F%89_%EC%A7%80%EC%88%98|BMI(체질량 지수)]]를 계산하시오. 계산식은 체중 / 키(m)의 제곱이며 18.5 미만은 저체중, 18.5-24.9는 정상임. [[day1_exercise1|연습 문제 해답]] ==== R의 데이터 구조 ==== [[Day1_Practice2|실습 코드]] === 연습 문제 === - 성분으로 "0", "21", "12", "16"을 갖는 문자열 벡터를 ch라는 이름으로 생성하시오. - 1번의 ch를 숫자형 변수로 변환하여 y에 저장하고, y를 오름차순으로 정렬하여 저장하시오. - seq() 함수를 이용하여 y2라는 변수명으로 0, 8, 16, 24d의 수열을 생성하시오. - y < y2의 논리값과 y <= y2의 논리값 중 간은 값의 갯수는 얼마인가? - 등차수열 1,3,5,...를 1항부터 30항까지 생성하여 x에 저장하시오. - repeat() 함수를 이용하여 TRUE, FALSE의 순서로 반복. 벡터의 크기가 10이 되도록 논리 벡터를 생성하여 x2라는 이름으로 저장하시오. - x에서 10보다 크고 20보다 작은 원소의 합을 구하시오. - x를 이용하여 6 x 5의 행렬을 생성하고 xmat 이름으로 저장하시오(행 기준으로 채움). - xmat에서 apply() 함수를 이용하여 행별 합, 열별 평균, 열별 분산값을 각각 계산하여 sumr, meancm varc의 이름으로 리스트 z에 저장하시오. [[day1_exercise2|연습 문제 해답]] ==== R을 이용한 데이터 다루기 ==== [[day1_practice3|실습 코드]] {{ :day1_sample_data.zip |sample data file(input_h.txt, input_noh.txt, food.csv)}} === 연습 문제 === - {{ :ex_data.zip |Ex_data.csv(gzipped)}} 파일로부터 자료를 읽어서 dat으로 저장하시오. - head() 함수를 이용하여 입력된 dat를 확인하시오. - dat 자료의 차원을 구하시오. - data의 첫번째 열에서 유전자의 이름을 추출하고 gene_name.txt 파일에 저장하시오. - dat의 2~10 열의 성분을 선택하여 새로운 변수에 저장하고 sub_data.txt 파일에 저장하시오(필드 구분자는 tab). - dat에서 유전자의 이름의 길이가 7보다 큰 경우만 선택하여 sub_data2.csv 파일로 저장하시오(필드 구분자는 comma). - dat에서 결측값의 갯수를 구하시오. - dat에서 결측값의 위치를 1차원 인덱스로 찾으시오. - dat에서 결측값의 위치를 2차원 인덱스로 찾으시오. - 9번에서 찾은 dat의 결측값의 위치를 index 변수에 저장하고 이를 활용하여 모든 결측값을 10으로 변경하시오. [[day1_exercise3|연습 문제 해답]] ==== R을 이용한 프로그래밍 ==== [[day1_practice4|실습 코드]] === 연습 문제 === - 1에서 100까지 차례로 더해 나갈 때, 처음으로 합이 1000을 넘게 만드는 수는 무엇인지 for 문과 break 문을 이용하여 구하시오. 또한 처음으로 1000을 넘었을 때 누적합은 얼마인지 구하시오. - 반복문을 이용하여 50부터 100까지의 합을 계산할 때, 짝수의 합을 계산하는 코드를 작성하시오(next 함수를 사용) - x = runif(1000,0,100)을 실행하고 x의 값이 5보다 크고 20보다 작은 수만 선택하여 합을 계산하고자 할 때, 아래와 같이 코드를 작성하시오. * 반복문과 조건문을 이용하여 계산하고 실행 시간을 체크하시오. * 인덱스를 이용하여 계산하고 실행 시간을 체크하시오. [[day1_exercise4|연습 문제 해답]] ===== 2일차: R의 기초 통계 분석 및 데이터 시각화 ===== ==== R의 기초 통계 분석 ==== [[day2_practice1|실습 코드]] ==== R을 이용한 회귀 분석 ==== [[day2_practice2|실습 코드]] ==== R을 이용한 데이터 시각화 ==== [[day2_practice3|실습 코드]] ===== 기타 유용한 팁 ===== [[http://genoglobe.kr/kribb/r_notes#%EA%B8%B0%ED%83%80_%EC%9C%A0%EC%9A%A9%ED%95%9C_%ED%8C%81|정해영의 R노트 내부 "기타 유용한 팁"으로 이동]]