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 파일 맨 처음에 선행되어야 함.
  1. 사이버 캠퍼스 자료실에 업로드된 exercise.zip 파일을 다운로드 후 exercise 폴더에 압축을 풀면 총 20개의 텍스트 파일이 저장되어 있다. 해당 파일들은 휴면상태 뇌파(resting state EEG) 신호로부터 추출한 특징(feature)이다. 폴더에 포함된 텍스트 파일의 이름은 기기명 (h7n1), EEG 변수 특징 (beam_results), 파일번호 (예: 009)로 구성되어 있고 _로 연결되어 있다.
  1. 저장된 텍스트 파일 중 하나를 열어보고 해당 텍스트 파일이 저장하고 있는 데이터의 구조에 대해 설명하고, 열과 열을 구분하기 위해 어떠한 구분자(separator)가 사용되었는지 기술하시오.

1-a 답: 입력(입력 시 해당 문구 삭제)

  1. 다운로드한 텍스트 파일이 저장된 폴더 경로를 path 라는 객체에 저장하고, dir() 함수를 이용해 해당 폴더에 저장되어 있는 파일의 이름 모두를 filename 이라는 객체에 저장 하시오. (참고: dir() 함수는 인수로 받은 폴더 경로 내 존재하는 모든 파일의 이름 및 확장자를 문자형 벡터로 반환해 주는 함수임. 자세한 사용법은 help(dir)을 통해 확인)
  1. filename 에서 기기명 부분만 추출 후, file_dev 객체에 저장 하시오.
  1. 정규표현식을 이용하여 filename 에서 기기명에 해당하는 부분을 삭제 후 file_id 객체에 저장 하시오(hint: gsub() 함수를 사용할 수 있으먀, file_id에 저장되어 있는 문자열 원소 모두는 beam_results_009.txt와 같은 형태로 반환되어야 함).
  1. 정규표현식을 사용하여 위에서 생성한 file_id에서 숫자만 추출 후 id_tmp 라는 객체를 생성 하시오. 그리고 ID 문자열와 file_id에 저장되어 있는 문자열과 결합해 모든 원소가 ID009와 같은 형태의 원소값을 갖는 ID 객체를 생성하시오
  1. paste() 또는 paste0() 함수를 활용해 1-a. 에서 생성한 path라는 객체와 filename을 이용해 파일경로/파일명 형태의 문자형 벡터를 full_filename 객체에 저장하시오.
  1. 1-f.에서 만든 full_filename, lapply()read.table() 함수를 활용하여 폴더에 저장되어 있는 모든 텍스트 파일을 리스트 형태로 저장한 datl 객체를 생성 하시오.
  1. 1-g.에서 생성한 datl에 저장되어 있는 20개의 데이터 프레임을 하나의 데이터 프레임으로 묶은 결과를 저장한 dat 객체를 생성 하시오.
  1. 1-c. 와 1-d. 에서 생성한 IDfile_dev 를 이용해 두 개의 변수로 구성된 id_info 라는 데이터 프레임을 생성 하시오. 단 두 문자형 벡터의 각 원소는 3 번씩 반복되어야 하고, 각 변수는 모두 문자형으로 저장되어야 함.
  1. 1-i. 에서 생성한 데이터 프레임 id_info 와 1.h 에서 생성한 dat 을 하나의 데이터 프레임으로 묶은 dat_fin 이라는 객체를 생성 하시오.
  1. 사이버 캠퍼스 자료실에 업로드된 beam-crf-ex.rds를 다운로드 한 후 R 작업공간에 불러온 결과를 beam_crf 객체에 저장하시오.
  1. tidyverse 패키지를 R 작업공간으로 읽은 후 dplyr 에서 제공하는 함수를 이용해 1-k. 에서 생성한 beam_crf 의 변수 eeg_filenam 문자열 중 처음 5개 문자(예: ID158)만 추출한 eeg_id라는 변수를 beam_crf 데이터 프레임 내에 새로운 변수로 만드시오.
  1. 두 데이터 프레임 beam_crfdat_fin은 연결할 수 있는가? 연결할 수 있다면 그 이유를 설명 하시오.

1-m 답:

  1. 만약 연결할 수 있다면 beam_crfdat_fin을 join 하여 두 데이터 프레임에 공통으로 포함된 행으로 구성된 데이터 프레임 beam_sub 객체를 생성 하시오.
  1. 1.n. 에서 생성한 beam_sub에 대해 dplyr 에서 제공하는 함수를 이용해 아래 기술한 내용을 수행 하시오. 단 각 단계는 파이프 연산자(%>%) 로 연결 하시오.

    1. usubjid, sex, age, literacy, Row, MDF, PF, ATR 변수를 선택한 다음
    2. 변수 sex, literacy, Row를 요인형(factor)으로 변환하고,
    3. 변수 agefloor() 함수를 이용해 소숫점 내림한 결과가 저장된 beam_sub2 객체를 생성 하시오.
  1. beam_sub2를 이용해 아래 기술한 결과를 반환하는 스크립트를 작성 후 확인 하시오.

    1. Row 수준별 MDF, PF, ATR의 평균(mean()), 표준편차(sd()), 최솟값(min()), 중앙값(median()), 최댓값(max())을 출력 하시오(dplyr 패키지 함수 이용).

    2.literacy는 조사에 참여한 대상자가 문자식별(문자를 읽고 쓸수 있는지)에 대한 정보를 담고 있는 변수이다. 문자식별 변수의 수준 별 케이스 수와 age, MDF, PF, ATR의 평균 결과를 출력 하시오(dplyr 패키지 함수 이용) .

    1. 1.p.1 과 1.p.2 와 동일한 결과를 출력하는 스크립트를 R 기본 문법을 이용해 작성해 본 후 두 방법(dplyr 문법 vs. R 기본 문법)에 대해 비교해 보시오.

1-p-3 비교 서술: