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