Notes on Basic R Programming

Introduction

This note is based on some of the most basic R programming language. The notes were taken sometime in Fall 2020.

작업공간 설정

getwd(): get working directory setwd(): set working directory read.table(‘xxx.txt’)

자료형

  1. [✔️]Scalar(스칼라): 한개 값만 갖는 변수
  2. [✔️]Vector(벡터): 여러개의 자료 저장 1차원 선형 자료 구조 (index 가 1부터 시작)
  3. [✔️]Matrix(행렬): 2차원 구조 (열부터 채워짐)
  4. [✔️]Array(배열): 다차원 구조 (상대적으로 이용 낮음)
  5. [✔️]List(리스트): 성격이 다른 구조(스칼라, 벡터, 행렬 등)을 묶는 구조
  6. [✔️]Data Frame(데이터 프레임): 리스트+벡터 혼합. column=리스트
    • matrix 와 다른 점: 각각의 열(컬럼)마다 다른 자료구조가 들어갈 수 있다.

자료형 확인/변환

  1. 확인
    • is.~ 함수
  2. 변환
    • as.~ 함수

Vector 함수

  1. 자료구조
    • c()
    • seq(from, to, by) : 등차수열
    • rep(x, times, each) : 반복
  2. 데이터 처리 함수
    • union(x,y) : 합집합
    • setdiff(x,y) : 차집합 X-Y
    • intersect(x,y) : 교집합
  3. 데이터 컬럼
    • names(x)

Matrix 함수

  1. 자료구조
    • matrix(x, nrow, ncol, byrow)
    • colnames(x)
    • rownames(x)
  2. 데이터 처리
    • mode / class
    • dim
    • length()
    • ncol, nrow
    • apply

apply 함수

: column 이 바뀌는 것을 유의해라! apply(x, margin, function) margin : 1 - row, 2 - column 에 function 적용

list 함수

  1. 자료구조 member <- list( name=c(“James”, “Jane”), ages=c(25,28), address=c(“서울”, “부산”), m=matrix(2,2,2) )

  2. 자료 처리 함수

    • unlist
    • lapply(x, function) : list 용 apply. 각 key에 function 적용
    • sapply(x, function) : lapply + unlist
    • do.call(function, x) : function(unlist(x))
      • cbind : column bind
      • paste : row w/ delimiter

Data Frame 처리 함수

  • str : 구조 보기
  • dim
  • ncol / nrow
  • names
  • summary
  • apply
  • subset
  • merge
  • 문자열 추출 (정규표현식—->위키백과로 연습)
    • str_extract_all
    • str_replace_all # 2020-09-21 과제: 2장 연습문제 4번

문자열 함수

  1. 정규표현식

    //stringr

    • str_extract, str_extract_all
    • str_length, str_locate, str_sub(=substring), str_to_upper(=toupper), str_to_lower(=tolower), str_replace, str_c, str_split

    //r내장

    • paste

데이터 입출력 방법

  1. 데이터 읽기
    • 키보드 입력: scan(), editt()
    • 로컬 파일 읽기: read.table(), read.csv(), fread(), read.xlsx()
    • 인터넷에서 파일 가져오기: read.csv()
    • 웹문서 가져오기: GET(), rawToChar(), readHTMLTable()
  2. 데이터 출력
    • 화면 출력
    • 파일 저장

조건문/반복문

  1. 조건문
    • if/else
    • ifelse
    • switch
    • which
  2. 반복문
    • for
    • while

함수

  1. R 내장 함수
    • 기술통계량 관련: min(), max()
    • 수학관련: abs(), sqrt(), exp()
    • 집합연산 관련: union(), intersect(), setdiff()
  2. 사용자 정의 함수

    functionName <- function(param1, param2….) { …codes… }

데이터 시각화

  1. 이산형(barplot, dot chart, pie chart, 3d pie chart)
  2. 연속형 (histogram, box plot, scatter plot)

Tidyverse package - 데이터 조작

  1. plyr
  2. dplyr : plyr 속도 향상 버젼. dataframe 집중적으로 다룸
  3. reshape2

Data Processing

  1. 파생 변수 생성 -> 합치기 table -> dcast -> join 그룹화 -> 비그룹화
    • melt melt(data, id=): id 빼고 모두 variable, value 열에 들어간다
    • dcast dcast(data, row~column, value.var=, function, function_param) 파생변수 합치기
    • join(x, y, by)
  2. 결측치 제거 및 편집 dataframe 도 상관없이 na.omit 먹힘

    -table( , exclude=NULL): NA 도 표시

Visualization Analysis

  1. ggplot2 package
    • qplot(): ggplot 의 빠른 버젼 (1) one variable : barplot, barchart qplot(변수, 데이터, fill=, color=, facets= , geom=…) fill, color, facets 질적변수 들어가면 좋음. (2) two varibles : scatterplot color, facets + size + shape -> 점의 크기/모양 이것도 데이터 열 입력 가능. 근데 모양은 무조건 범주형이어야 함. fill 없는거 주의.
    • 양적변수(이산형)을 범주형으로 생성 –> factor() factor(data, labels=c()) labels 로 이름 바꿔줌 예시) qplot(wt, mpg, data=mtcars, color=carb) qplot(wt, mpg, data=mtcars, color=factor(carb))
    • geom: 그래프 도형 속성 bar, point, line, smooth…

    • ggplot(): qplot(twoVariable)+aes 라고 생각하면 될듯. (1) setup ggplot(데이터, aes(x=변수1, y=변수2, color=, shape=)) (2) layers: geom geom_point, geom_smooth, geom_line … parameter -> aes; color, shape 등이 들어갈 수 있음 (3) labels labs(title, x, y) (4) theme theme() ggtitle() scale_x_discrete() scale_y_discrete() scale_color_discrete()/continuous() (5) facets facet_wrap facet_grid *boxplot
    • ggsave()

Data Base

  1. packages
    • DBI
    • rJava
    • RJDBC
  2. select dbGetQuery
  3. insert, update, delete dbSendUpdate
  4. create, alter

기초통계

난수 생성 set.seed(1)

  1. 단일 집단 모평균 추론
    • 통계량 계산: xbar, se(x), confidentialInterval, mean
  2. 정규성 검정
    • shapiro.test: p값이 0.05 보다 크면 정규성을 만족. (귀무가설: ~가 정규분포를 따른다.)
  3. 히스토그램
    • Frequency: 빈도수 (=FALSE일 경우: 퍼센트로 표시)
    • density: data를 x, density를 y 로 설정.
  4. Q-Q plot
    • qqnorm
    • qqline

단일 집단 모평균 추론

t.test

대응비교) t.test(before, after, paired=T)

두 모집단 모평균 추론

  1. 등분산성 검정 var.test
  2. 모평균 비교 검정 t.test(a, b, alter=)

서로 독립인 세 집단 이상에 대한 추론

*특이값 제거 *tapply(table.names, value, function)

  1. 세 집단 동질성 검정 - 분포가 동일하냐 bartlett.test (H0: 세 집단 분포의 모양은 동일하다)

  2. 세 집단 모평균 차이 검정 aov (H0: 세 집단의 평균은 동일하다)

한 모집단의 모비율에 대한 추론

binom.test(성공횟수, 총횟수, p=, alternative=, conf.level)

두 모집단의 모비율 추론

prop.test(c(성공횟수1, 2), c(총횟수1, 2), alternative=) 세 모집단도 동일함.

카이제곱검정

rxc 분할표 작성: CrossTable(r, c, chisq=T)

  1. 적합도 검정 -> 어떻게 보면 여러 집단 모비율 추론이랑 비슷 H0: p1=p2=…= P() “기대치와 관찰치는 차이가 없다” chisq.test()
  2. 독립성 검정 H0: 두 변수는 독립적이다 (=관련성이 없다) CrossTable(x,y,chisq=T)
  3. 동질성 검정 H0: 두 집단의 분포가 동일하다 독립성 검정과 매우 비슷

객체 지향 언어

  1. S3
    계산이 method를 통해 수행되는 동안 generic function (제너릭 함수)라고 불리는 특수한 유형의 함수가 어느 method를 호출할지 결정 ex) drawRect(canvas, “blue”) # canvas의 object type에 따라 다른 method를 실행

    foo <- object; class(foo) <- “class name” f <- function f.foo <- function

  2. S4
    S3와 유사하지만 보다 좀 더 형식적이고 Class에 대한 형식적인 정의를 갖음. 필드만 입력 가능. @ 로 호출 ex) alice@name

    setClass(“class.name”, slots=, contain=) new(“class.name”, slot1=, slot2=,…)

    setGeneric(“function.name”) setMethod(“function.name”, parameter(), function)

  3. RC
    다른 언어의 Class 정의와 유사. Class에 method가 따름. $로 객체와 method를 구별 ex) canvas$drawRect(“blue”)

    CLASS.NAME <- setRefClass(“class.name”, fields=, methods=) “instance.name” <- CLASS.NAME$new(field1=)

Written on December 17, 2021