Computer Programming : 1. R : Getting started HYEJOON PARK 1. Introduction 1.1 Introduction to R R 은 통계 분석과 그래프 생성에 사용되는 컴퓨터 언어 Windows, MacOS, 그리고 UNIX 운영 체제 모두에서 사용할 수 있는 언어 Why do we use R? • 무료 – • Flexible – • 비싼 가격을 지불해야 하는 다른 통계 프로그램들과 다르게 무료로 이용 가능 R 은 프로그래밍 언어로 사용하고 개발하는데 매우 용이 빠른 업데이트 – 개발자들이 패키지를 제공하고 업데이트를 꾸준히 실시하여, 이용자들은 가장 최근의 함수 패키지를 이용할 수 있음 1.2. Starting R 1.2.1 Download R • R • Official Webpage : http://r-project.org • 위 사이트에 접속하여 R 설치 1) CRAN 탭 클릭 2) 원하는 언어를 선택해서 클릭 3) 운영체제에 맞는 설치 파일 클릭 4) “install R for the first time” 클릭 5) 상단 “Download R version for system” 클릭 6) R 파일 설치 경로 지정 7) 컴퓨터 사양에 맞게 32bit 혹은 64bit 중 선택해서 설치 or 32bit 와 64bit 모두 설치 8) 이후에는 기본으로 설정되어 있는 설정들을 건드리지 않고 ‘다음’ 클릭 • R studio • R 보다 사용이 편리하여 R studio 를 사용하는 경우가 많음 • R studio 는 R 이 설치되어 있어야 설치할 수 있음 • Official Webpage : http://www.rstudio.com/products/rstudio • 위 사이트에 접속하여 R studio 설치 1) 좌측의 “RStudio Desktop” 클릭 2) “DOWNLOAD RSTUDIO DESKTOP” 클릭 3) 좌측 “Free” 아래의 “DOWNLOAD” 클릭 4) 운영체제에 맞는 설치 파일 클릭 5) R studio 파일 설치 경로 지정 6) R studio 이름 지정 및 바로가기 아이콘 생성 여부 설정 • R studio 설치 완료 후 실행하면 다음과 같은 창이 생성 미리 설치한 R 프로그램의 사양에 맞게(32bit 혹은 64bit) 선택 후 “OK”를 클릭하면 R studio 를 시행할 수 있음 • R 과 R studio 모두 기본적으로 설치되어 있는 패키지가 있음 • 기본적으로 내재되어 있는 패키지 외의 패키지는 별도로 설치한 후 사용할 수 있음 1.2.2 install packages • 명령어로 설치하는 법 : install.packages(“패키지명”) • R 1) 상단에 있는 “패키지들” 클릭 → “패키지(들) 설치하기” 클릭 2) “Korea”로 적혀있는 중 (아무거나) 하나 선택 3) 설치하고자 하는 패키지를 찾아 클릭한 후 “OK” 클릭 • R studio 1) 우측 하단에 있는 Packages 탭에서 install 클릭 (1) 패키지 zip 파일을 직접 다운로드하여 패키지 설치 상단 “install form”을 “Package Archive File”로 선택 후 zip 파일 경로와 zip 파일 선택 → “install” 클릭 (2) zip 파일 없이 패키지 설치 상단 “install form”을 “CRAN”으로 선택 → “Packages”에 설치하고자 하는 패키지명 입력 → “install” 클릭 1.3. Literatures 유용한 링크 : • The R project web page provides the following introduction to R : http://cran.rproject.org/doc/manuals/R-intro.pdf • Short list of commands : http://cran.r-project.org/doc/contrib/Short-refcard.pdf • ggplot2 (R graphic package) : http://ggplot2.org 2. Starting R 2.1. Starting R • R 을 실행하면 메인창(R 𝐺𝑢𝑖)과 서브창(R 𝑐𝑜𝑛𝑠𝑜𝑙𝑒)이 생성, R studio 를 실행하면 하단이 R 𝑐𝑜𝑛𝑠𝑜𝑙𝑒 창 • R 𝑐𝑜𝑛𝑠𝑜𝑙𝑒 창에 함수를 입력하여 작업을 시행 • R 에서 그래프를 생성하면 새로운 창에 그래프가 그려짐 • R studio 에서 그래프를 생성하면 우측 하단 “Plots” 탭에 그래프가 그려짐 • R 𝑐𝑜𝑛𝑠𝑜𝑙𝑒 창 ′ > ′ 우측에 함수 입력 후 엔터를 하면 함수가 시행됨 • 함수식이 완료되지 않은 상태에서 엔터를 하면 함수식이 끝나지 않았다는 의미에서 ′ + ′가 좌측에 새겨짐 • 주석을 입력하고 싶은 경우 ‘#’ 기호를 입력하고 원하는 주석을 입력 Operator { ( $ [ , [[ ^ , ** : %*% , %/% , %% ∗,/ +,< , > , <= , >= , == , != ! & , && , | , || ←,=,→ • Description block operator parenthesis extracting a component from a list or a data frame subscripts power operators negative operator sequence operator matrix multiplication, quotient, remainder operator multiplication, division sum, subtraction logical comparison operators negation logical operators allocation operator 수식에 위 기호들을 사용하는 경우 테이블의 상단에서 하단으로 갈수록 우선순위가 떨어짐 • 2+3 2-3 3*6 7/3 2^6 우선순위가 확실하지 않은 경우 “(”를 사용하여 수식을 완성 4+3*5 4+5*7 3+10/(2+3) (1/2+1/3)^2*(1/3^2) (10-4*2)^2/(-2) (3+(3*(3+4))-5)/4 2^(1/3) 5%/%3 4%/%2 5%%3 4%%2 4==5 4%/%2==0 3<=4 5>4 4!=3 !(5==5) TRUE&TRUE TRUE&FALSE FALSE&TRUE FALSE&FALSE TRUE|TRUE TRUE|FALSE FALSE|TRUE FALSE|FALSE !FALSE !TRUE 2.2. Assignments • Assignments – • ‘←’ 기호 혹은 ‘=’ 기호를 사용해 Objects 에 값이나 함수를 부여할 수 있음 Variable Names – 변수명으로 대소문자를 구분. 즉, 𝑥와 𝑋는 다름 – 변수명은 숫자(e.g. 1𝑥)나 기호(e.g. %𝑥)로 시작할 수 없음 – 변수명에 공백을 사용할 수 없음 x x 6 x x x y y <- 5 # value is assigned to x -> x = 7 <- x^2+3 # value is assigned to y 3+7 -> y1 z1 <- 2+5 assign('w1',2^5) y1; z1; w1 L1 < -5 L1 = 0 L1 < -5 # not assignment 5scr <- 5 # variable names cannot start with digits 5scr _scr <- 5 # variable names cannot start with symbols _scr .scr <- 5 # variable names can start with . .scr kor.scr <- 95 KOR.SCR KOR.SCR <- 88 kor.scr; KOR.SCR ## Confirming / Removing objects ## ls() objects() tmp <- 2*pi tmp rm(tmp) tmp ls() remove('L1', 'w1') ls() rm(list=ls()) # remove all objects ls() 2.3. Getting help • Getting help in R – help(𝑡𝑜𝑝𝑖𝑐) : 𝑡𝑜𝑝𝑖𝑐 함수와 관련된 설명문이 나타남(=?𝑡𝑜𝑝𝑖𝑐) – help.search(𝑡𝑜𝑝𝑖𝑐) : 𝑡𝑜𝑝𝑖𝑐과 관련된 명령어들이 나타남(=??𝑡𝑜𝑝𝑖𝑐) – example(𝑡𝑜𝑝𝑖𝑐) : 𝑡𝑜𝑝𝑖𝑐 함수 예시가 나타남 help(mean) ?mean help.search("mean") ??mean example(mean) 3. Data Objects 3.1 R Objects • vector : 동일한 유형의 정렬된 개체 모음 • factor : vector 의 특수한 유형으로 범주형 변수 • matrix(more generally array) : 벡터의 다차원 일반화 • list : 유형이나 차원이 동일할 필요가 없는 일반적인 형태의 벡터 모음 • dataframe : 다른 유형의 변수로 이루어질 수 있는 행렬과 동일한 구조 (행렬은 다른 유형의 변수로 이루어질 수 없음) • function : 여러 표현식을 묶어 한 번에 시행하는 객체 3.2 Mode of Data Objects • Data Objects : vectors, factors, matrices(array), lists, dataframes • Mode of Data Objects Data tpye logical numeric complex character • • Description TRUE or FALSE integer and double complex number character string Examples TRUE, FALSE 5, -2, 3.14, pi, sqrt(2) 2.1+3i, 5+0i “This is text”, “5” Converting Data types – as.logical(𝑜𝑏𝑗𝑒𝑐𝑡), as.numeric(𝑜𝑏𝑗𝑒𝑐𝑡) – as.integer(𝑜𝑏𝑗𝑒𝑐𝑡), as.double(𝑜𝑏𝑗𝑒𝑐𝑡) – as.complex(𝑜𝑏𝑗𝑒𝑐𝑡), as.character(𝑜𝑏𝑗𝑒𝑐𝑡) – Coercion of data types : logical → numeric → complex → character Checking Data types – is.logical(𝑜𝑏𝑗𝑒𝑐𝑡), is.numeric(𝑜𝑏𝑗𝑒𝑐𝑡) – is.integer(𝑜𝑏𝑗𝑒𝑐𝑡), is.double(𝑜𝑏𝑗𝑒𝑐𝑡) – is.complex(𝑜𝑏𝑗𝑒𝑐𝑡), is.character(𝑜𝑏𝑗𝑒𝑐𝑡) value <- 65 value string <- "Hello world" string l.type <- 2<4 l.type c.num <- 2+3i c.num mode(value) mode(string) mode(l.type) mode(c.num) mode(x) "I am AB C" == "I am AB C" T == TRUE # T and TRUE are the same F == FALSE # F and FALSE are the same 3 == 3.0 x <- T as.numeric(x) # character to numeric as.character(x) # numeric to character as.complex(x) # character to complex as.logical(0) as.logical(3+5i) as.logical("Hello") as.logical("1") as.numeric(3+5i) as.numeric("3.14") as.numeric("pi") as.integer(pi) as.double("3.14") as.complex(4) as.character(pi) 3+TRUE 3+4i+4 "34"+5 a <- "3" is.numeric(a) is.character(a) is.logical(a) 3.3 Special Values in R • • NA(Not Available) – NA 는 사용할 수 없는 데이터를 의미 – NA 는 일반적으로 결측값을 의미 NaN(Not A Number) – NaN 정의되지 않은 결과를 수학 연산으로 나타내는데 사용 – R 에서 NaN 은 NA 를 의미 (NaN 은 사용할 수 없는 숫자 데이터(숫자 결측값)을 의미하고, NA 는 사용할 수 없는 모든 유형의 데이터를 의미(결측값)) • Inf, -Inf – • • Inf 와 -Inf 는 각 양의 무한과 음의 무한을 의미 NULL – NULL 은 R 에서 ’대상이 없음’을 의미 – 값이 정의되지 않은 함수나 표현식의 결과로 NA 가 도출됨 Testing for special values – is.na(x) : x 내에 NA 또는 NaN 이 있는지 확인 – is.nan(x) : x 내에 NaN 이 있는지 확인 – is.null(x) : x 가 NULL 인지 확인 – is.infinite(x) : x 가 양 혹은 음의 무한인지 확인 1-Inf 0/0 Inf/Inf Inf-Inf 0*Inf exp(709) exp(710) exp(-Inf) 5+NA 5+NaN 5+Inf 5-Inf is.na(NA) is.nan(NaN) is.infinite(1+Inf) is.null(NULL) x <- NA is.na(x) is.nan(x) x <- NaN is.nan(x) is.na(x)