4.6 Homework #4
과제 제출 방식
- R Markdown 문서(
Rmd
) 파일과 해당 문서를 컴파일 후 생성된html
파일 모두 제출할 것 - 모든 문제에 대해 작성한 R 코드 및 결과가
html
문서에 포함되어야 함. - 해당 과제에 대한 R Markdown 문서 템플릿은 https://github.com/zorba78/cnu-r-programming-lecture-note/blob/master/assignment/homework4_template.Rmd 에서 다운로드 또는
Ctrl + C, Ctrl + V
가능 - 최종 파일명은
학번-성명.Rmd
,학번-성명.html
로 저장 - 압축파일은
*.zip
형태로 생성할 것
주의 사항
- 과제에 필요한 텍스트 데이터 파일은 가급적 제출 파일(rmd 및 html 파일)이 생성되는 폴더 안에 폴더를 만든 후 텍스트 파일을 저장할 것. 예를 들어
homework4.Rmd
파일이C:/my-project
에서 생성된다면C:/my-project/exercise
폴더 안에 텍스트 파일 저장 - 만약
Rmd
파일이 작업 디렉토리 내 별도의 폴더 (예:C:/my-project/rmd
)에 저장되어 있고 텍스트 데이터 파일이C:/my-project/exercise
에 존재 한다면, 다음과 같은 chunk 가 Rmd 파일 맨 처음에 선행되어야 함.
- 사이버 캠퍼스 자료실에 업로드된
exercise.zip
파일을 다운로드 후exercise
폴더에 압축을 풀면 총 20개의 텍스트 파일이 저장되어 있다. 해당 파일들은 휴면상태 뇌파(resting state EEG) 신호로부터 추출한 특징(feature)이다. 폴더에 포함된 텍스트 파일의 이름은기기명
(h7n1
),EEG 변수 특징
(beam_results
),파일번호
(예:009
)로 구성되어 있고_
로 연결되어 있다.
- 저장된 텍스트 파일 중 하나를 열어보고 해당 텍스트 파일이 저장하고 있는 데이터의 구조에 대해 설명하고, 열과 열을 구분하기 위해 어떠한 구분자(separator)가 사용되었는지 기술하시오.
1-a 답: 입력(입력 시 해당 문구 삭제)
- 다운로드한 텍스트 파일이 저장된 폴더 경로를
path
라는 객체에 저장하고,dir()
함수를 이용해 해당 폴더에 저장되어 있는 파일의 이름 모두를filename
이라는 객체에 저장 하시오. (참고:dir()
함수는 인수로 받은 폴더 경로 내 존재하는 모든 파일의 이름 및 확장자를 문자형 벡터로 반환해 주는 함수임. 자세한 사용법은help(dir)
을 통해 확인)
filename
에서기기명
부분만 추출 후,file_dev
객체에 저장 하시오.
- 정규표현식을 이용하여
filename
에서기기명
에 해당하는 부분을 삭제 후file_id
객체에 저장 하시오(hint:gsub()
함수를 사용할 수 있으먀,file_id
에 저장되어 있는 문자열 원소 모두는beam_results_009.txt
와 같은 형태로 반환되어야 함).
- 정규표현식을 사용하여 위에서 생성한
file_id
에서 숫자만 추출 후id_tmp
라는 객체를 생성 하시오. 그리고ID
문자열와file_id
에 저장되어 있는 문자열과 결합해 모든 원소가ID009
와 같은 형태의 원소값을 갖는ID
객체를 생성하시오
paste()
또는paste0()
함수를 활용해 1-a. 에서 생성한path
라는 객체와filename
을 이용해파일경로/파일명
형태의 문자형 벡터를full_filename
객체에 저장하시오.
- 1-f.에서 만든
full_filename
,lapply()
와read.table()
함수를 활용하여 폴더에 저장되어 있는 모든 텍스트 파일을 리스트 형태로 저장한datl
객체를 생성 하시오.
- 1-g.에서 생성한
datl
에 저장되어 있는 20개의 데이터 프레임을 하나의 데이터 프레임으로 묶은 결과를 저장한dat
객체를 생성 하시오.
- 1-c. 와 1-d. 에서 생성한
ID
와file_dev
를 이용해 두 개의 변수로 구성된id_info
라는 데이터 프레임을 생성 하시오. 단 두 문자형 벡터의 각 원소는 3 번씩 반복되어야 하고, 각 변수는 모두 문자형으로 저장되어야 함.
- 1-i. 에서 생성한 데이터 프레임
id_info
와 1.h 에서 생성한dat
을 하나의 데이터 프레임으로 묶은dat_fin
이라는 객체를 생성 하시오.
- 사이버 캠퍼스 자료실에 업로드된
beam-crf-ex.rds
를 다운로드 한 후 R 작업공간에 불러온 결과를beam_crf
객체에 저장하시오.
- tidyverse 패키지를 R 작업공간으로 읽은 후 dplyr 에서 제공하는 함수를 이용해 1-k. 에서 생성한
beam_crf
의 변수eeg_filenam
문자열 중 처음 5개 문자(예:ID158
)만 추출한eeg_id
라는 변수를beam_crf
데이터 프레임 내에 새로운 변수로 만드시오.
- 두 데이터 프레임
beam_crf
와dat_fin
은 연결할 수 있는가? 연결할 수 있다면 그 이유를 설명 하시오.
1-m 답:
- 만약 연결할 수 있다면
beam_crf
와dat_fin
을 join 하여 두 데이터 프레임에 공통으로 포함된 행으로 구성된 데이터 프레임beam_sub
객체를 생성 하시오.
1.n. 에서 생성한
beam_sub
에 대해 dplyr 에서 제공하는 함수를 이용해 아래 기술한 내용을 수행 하시오. 단 각 단계는 파이프 연산자(%>%
) 로 연결 하시오.usubjid
,sex
,age
,literacy
,Row
,MDF
,PF
,ATR
변수를 선택한 다음- 변수
sex
,literacy
,Row
를 요인형(factor)으로 변환하고, - 변수
age
를floor()
함수를 이용해 소숫점 내림한 결과가 저장된beam_sub2
객체를 생성 하시오.
beam_sub2
를 이용해 아래 기술한 결과를 반환하는 스크립트를 작성 후 확인 하시오.Row
수준별MDF
,PF
,ATR
의 평균(mean()
), 표준편차(sd()
), 최솟값(min()
), 중앙값(median()
), 최댓값(max()
)을 출력 하시오(dplyr 패키지 함수 이용).
2.
literacy
는 조사에 참여한 대상자가 문자식별(문자를 읽고 쓸수 있는지)에 대한 정보를 담고 있는 변수이다. 문자식별 변수의 수준 별 케이스 수와age
,MDF
,PF
,ATR
의 평균 결과를 출력 하시오(dplyr 패키지 함수 이용) .- 1.p.1 과 1.p.2 와 동일한 결과를 출력하는 스크립트를 R 기본 문법을 이용해 작성해 본 후 두 방법(dplyr 문법 vs. R 기본 문법)에 대해 비교해 보시오.
1-p-3 비교 서술: