1학년 2학기/의료데이터분석 (R사용법)

[1강_on] Basic Grammar in R

seungyeonworld 2025. 3. 11. 23:53

Section.1) Basic Grammar in R

[기본내용]

 

1.프롬프트(prompt) 개념

  •  > : 명령어를 입력할 수 있는 자리 (R 콘솔에서 기본 입력 프롬프트)
  •  + : 명령문이 한줄에서 완전히 끝나지 않고 다음줄로 이어질 경우 표시됨
  • 입력중이던 명령문에서 빠져나오려면 Esc 키를 사용

 

2. 명령어 입력 규칙

  • 일반적으로 한 줄에 하나의 명령문을 입력 
  • 한줄에 여러개의 명령을 입력하려면 ;(세미콜론) 으로 구분
  • 한줄이 넘어가면 + 프롬프트가 표시되며 계속 입력해야 함

3. 주석(comment)

  • # 이후의 내용은 주석 처리되어 실행되지 않음
  • R에서는 파이썬처럼 여러 줄을 감싸는 블록주석기능이 없음(''' ''', """ """)
    (단,여러줄 선택후 Ctrl + Shift + C 사용시 선택된 줄 마다 # 이 자동추가)

4. 대소문자 구분

  • R에서는 대소문자를 구분함 (A와 a는 다른 변수로 인식)

5. 콘솔 정리 (화면클리어)

  • Ctrl + L을 눌러 콘솔 화면을 정리
  • 콘솔화면만 깨끗하게 정리 될 뿐 히스토리 영역등에는 영향이 없다

6. 이전 명령어 탐색

  • 상,하 화살표(↑, ↓)를 사용하여 이전에 실행한 명령어를 탐색 할 수 있음

 

[R의 실행]

1. R에서 명령문 실행 방식

  • Console에서 직접 실행
    → R 콘솔에서 명령어를 입력하면 즉시 실행됨
  • R-script에서 작성 후 실행
    → R 스크립트(.R파일)에 코드를 작성한 후 실행하여 콘솔에 전달됨
    → 실행할 문구에 커서를 두고 Ctrl + Enter 를 누르면 콘솔에서 실행됨
    → 실행아이콘 (플레이 버튼 모양)을 클릭해도 실행가능

2. 단축키를 활용한 실행방법

  • 한 줄 실행 : Ctrl + Enter
  • 여러 줄 실행  :블록을 드래그 한 후 Ctrl + Enter
  • 편집된 모든 명령문 실행 : Ctrl + Alt + R
  • 바로 직전에 실행한 명령문을 다시 실행 : Ctrl + ↑ / Ctrl + Shift + P

 

[함수와 인수]

 

1. Function (함수) 개념

  • 함수는 입력(input)을 받아 특정 연산을 수행한 후 출력(output)을 반환하는 개념으로, 수학의 함수와 동일함
  • R에서 함수를 사용하는 기본 형태 : function( argument1, argument2 ```)
  • maen() : 평균을 구하는 함수
  • sum() : 합을 구하는 함수
  • c() : 여러 값을 묶어주는 함수

2. Arguments of Function (함수의 인수, 매개변수)

  • 함수는 특정한 입력값 (Arguments)를 받아 원하는 결과를 생성
  • Arguments의 개념
    → 함수에 전달하는 값
    → arguments_name = arguments_value 형태로 값을 전달
    → 기본값이 설정된 경우는 생략가능 (기본값이 없는경우 필요한 값은 명확히 입력해야함)
    → help(함수명)을 활용하여 함수의 사용법과 arguments를 확인할 수 있으며, 함수를 올바르게 사용하기위해 해당 삼수가 어떤 argument를 요구하는지 알아야 함

 

[Help 함수]

 

1. R에서 함수 도움말(Help) 확인하는 방법

  • help(함수명) 또는 ?함수명 을 사용하여 도움말 호출
  • help.start()를 실행하면 HTML형식의 도움말 창을 띄울 수 있음
  • help.search("키워드") 또는 ??키워드 를 이용하여 관련 함수 목록 검색가능 (키워드가 포함된 함수목록을 보여줌)
  • RStudio 에서는 파일 창의 "Help" 에서 직접 함수명을 검색하여 관련 정보를 확인 가능

2. R도움말의 구조

  • 함수 이름과 패키지 정보 (어떤 패키지에 속해 있는지)
  • 간략한 설명 (함수가 무엇을 하는지 요약)
  • Description(설명) (함수의 기능과 역할에 대한 자세한 설명)
  • Usage(사용법) (함수를 호출하는 방법 및 입력값)
  • Arguments(인수 설명) (함수에 전달할 수 있는 매개변수와 그 역할)
  • Value(출력값 설명) (함수가 반환하는 값)
  • Examples(예제 코드) (사용 예시를 통해 함수의 활용 방법을 보여줌)
  • Details(상세 설명) (추가적인 정보 제공)

 

[R 패키지]


1. 패키지 (Packages) 란 ?

  • R에서는 데이터 분석을 위해 다양한 함수를 제공하는 패키지가 존재함
  • 패키지는 특정 기능을 수행하는 함수와 데이터를 모아둔 모음집(라이브러리)임
    (라이브러리 : 컴퓨터에 패키지들이 저장되는 곳).
  • 특정 기능을 사용하려면 해당 패키지를 사전에 설치하고 불러와야 함

2. 패키지 설치 & 불러오기 - 콘솔에서 직접입력

  • 패키지 설치 (한 번만 실행하면 됨)
     →  install.packages("ggplot2")
  • 패키지 불러오기 (사용할 때마다 실행 필요)
    → library(ggplot2 : 패키지를 로딩해서 사용 가능하게 함
    → require(ggplot2) : library()와 동일, 패키지가 없으면 False반환

3. 패키지 설치 & 불러오기 - R Studio Packages탭 이용

  • 패키지 설치
    → "Packages" 창에서 "Install" 버튼 클릭
    → 패키지 이름 입력수 "Install" 버튼 클릭
  • 불러오기
    → "Packages" 목록에서 설치된 패키지를 찾아 체크박스를 클릭하면 자동으로 로딩됨

[R 저장 및 종료]

 

1. R Script 저장 방법

  • 메뉴에서 [File] → [Save] 또는 [Save As] 선택
  • 파일 이름은 일반적으로 Lecture_01.R 같은 .R 확장자로 저장
  • UTF-8 인코딩으로 설정하여 저장하는 것이 권장됨

2. R Console 저장 방법

 

  • 메뉴에서 **[File] → [Quit Session]**을 선택하면 종료 가능
  • 콘솔에서 생성된 모든 객체(변수, 데이터 등)를 그대로 저장 가능
  • 저장 형식: .RData 파일로 저장됨
  • 작업 중간에 작업 공간을 저장하고 싶은 경우
     > save.image()  # 현재까지 작업한 내용이 'RData' 파일에 저장

 

[ Working Directory (작업 디렉터리 설정 및 확인) ]

1. 작업폴더 확인하기

  • getwd() : R에서 지정한 작업폴더 경로

2. 작업폴더 변경하기

  • setwd( "F:/Class/Rstudio") : 새로운 작업 폴더 지정
    (단, 해당 폴더가 미리 생성되어 있어야함)
  • setwd("..") : 한단계 상위 폴더로 이동

3. 작업폴더에 생성된 객체, 함수들의 리스트 확인

  • is() : objects()와 동일하며, 환경 내 객체를 출력함

 

[Calculator (연산) ]

[Object (객체)]

1. 객체란?

  • R에서 생성하고 조작할 수 있는 모든 것이 객체임
  • ex : 숫자, 문자, 배열, 함수, 데이터 구조 등
  • 실제 분석에서 객체는 변수 혹은 데이터 자체라고 생각하면 된다.

2. 객체생성방법

  • '<-'  : 값을 할당하는 연산자
    > x <-10 : x 에 10을 저장
    > 단축키 : Alt + -(백기호)
    > =(등호) 도 사용할 수 있지만 권장되지는 않음
  • 'is()' : 객체목록 확인
     > 현재 콘솔 창에서 생성된 객체들의 목록 출력
  • rm(x) : 객체삭제
     > x라는 객체 삭제

3. 객체 이름 규칙

  • 객체 이름은 영문자(a-z, A-Z), 숫자(0-9), 마침표(.), 밑줄(_) 조합 가능.
  • 대소문자를 구분함 (X와 x는 다른 객체).
  • 자리수에 제한은 없으나 이름에 설명력이 있는것이좋음
  • 소문자단어는 '_'로 구분하는것 추천 (ex. smoke_ever)
  • 제한 사항:
    • 첫 글자로 숫자 또는 _ 사용 불가.
    • 첫 글자가 .일 경우, 두 번째 글자에 숫자가 오면 안 됨.
    • if, for 같은 R의 예약어(키워드)는 객체 이름으로 사용 불가.

 

Section.2) Type of  Value

 

[값의 종류]

 

1. 실수형 : numeric

  • 소수점 형태로 이루어짐
  • R은 모든 숫자형 데이터를 실수형으로 받아들임
  • 소수점 표현
     > floor : 버림
     > ceiling : 올림
     > round : 반올림 / round(숫자,digits) : 소수점 difits자리로 반올림
  •  

:



2. 정수형 : integer

  • 정수로 인식하길 원할경우 임의로 설정해야만 정수로 인식 (기본 : 실수형)

 

 

  • 소수점표현 : floor(버림),  ceiling(올림), round(버림)

 

3. 문자형 : character

  • 문자 형태의 변수를 입력할 때, 큰따옴표나 작은따옴표로 묶어서 쓰며 둘의 차이는 없음
  • 숫자를 "1"로 쓴경우 실수형이 아닌 문자형으로 인식함
  • 숫자형과 문자형이 혼합되어 있는경우 모두 문자형으로인식
  • LETTERS와 letters는 이미 내장되어 있는 객체 (각각 알파벳 대문자, 소문자 출력

4. 논리형

  • 조건에 따른 결과에 대하여 참(True) 또는 거짓(False)의 논리적인 대답을 출력
  • T/F로 줄여쓰기가 가능하긴하나 풀네임사용을 권장함
  • True = 1, False = 0으로 취급

 

** 11 나누기 5가 2 이거나 4 나누기 2는 2인가 ? 

  정답 ) (11 / 5) == 2 |  (4/2) == 2 ;     True

  오답 ) ((11/5==2)|(4/2==2))==2;       False

 

4. 결측값(NA) : 대문자임! is.na()함수는 소문자임!

  • 데이터가 수집 및 저장 과정에서 누락될 때 발생.
  • R에서는 NA로 표시됨.
  • NA가 포함된 연산의 결과도 NA.
  • is.na(x): x의 각 요소가 NA인지 확인하는 함수.(NA인경우 True, NA가 아닌경우 False반환) 

 

5. NaN

  • 수학적으로 정의되지 않은 연산(예: 0/0, Inf - Inf)에서 발생.
  • NA와는 다르게, 수학적 오류로 인해 생성됨

6. 값의 변환

  • 숫자로 입력된 문자형데이터 ("1")는 숫자형으로 변환가능
    (as.numeric()함수사용)
  • 문자로 입력된 문자형데이터("aaa")는 숫자형으로 변환 불가능 
    (as.numeric()함수 사용시 숫자데이터부분은 숫자로 변환되지만 문자입력부분은 NA 가 출력)
  • 숫자형 1,0은 논리형 True와 False로 변환가능
    (as.logical() 함수 사용)
  • 문자형 T,F는 논리형 True와 False로 변환가능
    (소문자 t,f 불가, NA 출력된다! R은 대소문자를 구분한다는 것을 기억하기)
  • 실수형 >  정수형으로 바꿀경우 아애 버림이 되어버린다!

 

Section.3) Type of  Object

 

[Dataset & Data structure]

1. Dataset

  • 관찰대상으로부터 관심있는 속성들을 측정한 자료들의 모임
  • 행 : 관찰대상(객체)
  • 열 : 속성, 변수 (측정자료)

2. Data structure

  • 프로그래에서 다양한 타입의 데이터를 변수에 저장하는 것이 필요
  • R의 기본데이터 타입(base object)은 vector
    (vector / list / matrix / array / factor / data frame

[R의 Vector]

1. Vector의 개념

  • R에서 가장 기본적인 자료 저장 방식
  • 동일한 유형(숫자, 문자, 논리값)의 데이터를 저장하는 1차원 구조
  • 문자(character)>실수(numeric) > 정수(integer)>논리(logical) 순으로 데이터 변환 발생
    (동일한 유형의 데이터를 저장하는 1차원 구조이기 때문)
  • 리스트와 다르게 서로 다른 자료형을 포함할 수 없음
  • 인덱스 : 1부터 시작하는 정수로 출력물의 각 첫 줄에 대괄호 []로 둘러싼 숫자

2. Vector의 종류

  • atomic vector: 우리가 일반적으로 생각하는 vector
    - 원소가 동질적(자료형이 같은) 백터
    - 1차원 구조
     - v1 <- c(1, 2, 3)           # numeric형 atomic vector
     - v2 <- c("a", "b", "c")     # character형 atomic vector
     - v3 <- c(TRUE, FALSE, TRUE) # logical형 atomic vector
    - 모두 is.atomic() 하면 TRUE 출력
  • list :
    - 원소가 이질적 (자료형이 같지 않아도 됨)
    - 다차원 구조

3. Vector의 인덱싱

  • 백터의 원소는 인덱스를 통해 접근가능 (1부터 시작)
  • 특정 원소를 조회,삭제, 수정이 가능
  • 백터의 길이를 벗어나는 인덱스를 호출하면 na 반환

4. Vector의 합수

  • c() :  여러 개의 원소를 연결하여 벡터 생성
       ex) x <- c(1, 2, 3, 4, 5)
  • 백터 생성연산자 : ":" (colon)
    - 시작값 : 종료값 형태로 사용
    - 1 : 5     > 1 2 3 4 5
    - 5 : 1     > 5 4 3 2 1
  • seq() : 일정한 간격을 가지는백터 생성 
       ex) seq(from, to, by,leng.out) : form부터 to까지 by씩증가하는 백터 (by는 생략가능)
  • rep() : 백터를 반복생성하는 함수
       ex) rep(vlaue, time) : value 를 time 만큼 반복 (기본)
            rep(1:3, time s=2) : 1,2,3,1,2,3
            rep(1:3, 2) : 1,2,3,1,2,3      //times가 기본 argument이기때문에 생략가능함
       ex) rep(vlaue, each=2) : 각 value를 each번 반복해서 출력 (반드시 each를 명시해줘야함)
           rep(1:3, each=2) : 1,1,2,2,3,3
  • length() : Vector의 길이를 구하는 함수

** assign (변수, 값) : 변수에 값을 할당하는 함수

** paste( 값, 붙일숫자,sep ="붙일 기호") : 값 붙일숫자1 붙일기호 값 붙일숫자2 붙일기호 반환
  (붙일기호 없을경우 공백)

** names() : 값들에 의미를 부여하는 함수 (이름이 부여된 함수는 그뒤로 출력시 이름과 함께 출력)

** length() : vector의 원소 개수 반환

 

연습문

1.

> v0 <- LETTERS[1:10]
> v0
 [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"

2.

> class(v0)
[1] "character"

3.

> v1 <- (1:100)
> v1
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
 [19]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
 [37]  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
 [55]  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
 [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
 [91]  91  92  93  94  95  96  97  98  99 100

4.

> seq(-5,5,0.5)
 [1] -5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5  0.0  0.5  1.0  1.5  2.0
[16]  2.5  3.0  3.5  4.0  4.5  5.0

5.

> rep(1:10,each=2)
 [1]  1  1  2  2  3  3  4  4  5  5  6  6  7  7  8  8  9  9 10 10