Summary : 다음을 R을 통하여 실습합니다. (1) R 활용하기 (2) Survival analysis를 위한 R의 기본 문법 (3) R markdown

R 활용하기

R Programming에 관한 자료들이 상당히 많습니다. R Cookbook, The Art of R Programming과 같은 세련된 유료 컨텐츠들이 있습니다만, 그에 상응하는 수준의 무료 컨텐츠가 많습니다. 시간이 허락한다면 http://www.r-project.org의 ‘Manuals’ 코너를 한 번 둘러보길 추천 합니다.

  1. R 기초입문 (저자 미상, 한국어) : http://xmlarchive.org/hrc/wp-content/uploads/2012/12/r_book_mac_v3.pdf

-> R 입문에 좋은 재료입니다. (아래 R 기본 문법은 여기서 참고 했습니다.)

  1. R reference card (Tom Short 저술, 영어) : http://cran.r-project.org/doc/contrib/Short-refcard.pdf

-> 아주 유용한 함수들과 간략한 설명이 있습니다.

참고로 Survival analysis를 위한 자료는 다음을 추천합니다.

  1. R Package ‘survival’ 공식 설명서 (Terry Therneau 저술, 영어) : http://cran.r-project.org/web/packages/survival/survival.pdf

-> 필요하실 때 마다 찾아보시면 될 듯 합니다.

  1. http://anson.ucdavis.edu/~hiwang/teaching/11fall/R_tutorial%204.pdf

-> 구글에서 검색한 자료인데 상당히 좋습니다. (앞으로 실습 시간에 많은 부분을 참고할 예정입니다.)

Survival analysis를 위한 R 기본 문법

  1. Scrpit, Console, Prompt의 개념 알기.

  2. 산술연산

R에서는 계산기로서의 산술연산을 할 수 있습니다.

 3 + 2; 3 - 2; 3 * 2; 3 / 2; 3 ^ 2;
## [1] 5
## [1] 1
## [1] 6
## [1] 1.5
## [1] 9
 9 %% 2; 9 %/% 2;
## [1] 1
## [1] 4
exp(1);log10(1000)
## [1] 2.718
## [1] 3
  1. 논리연산

결과가 TRUE or FALSE인 논리연산을 할 수 있습니다. 나중에 if 문을 작성할 때 논리를 작성할 때 유용합니다.

5 < 5;5 <= 5;5 > 5;5 >= 5;5 == 5;5 != 5;
## [1] FALSE
## [1] TRUE
## [1] FALSE
## [1] TRUE
## [1] TRUE
## [1] FALSE
x <- TRUE
y = FALSE
x | y;x & y;
## [1] TRUE
## [1] FALSE
isTRUE(x);
## [1] TRUE
  1. Vector와 Matrix: 정의와 계산해봅시다.
my.vector.1 = c(1,2,3,4,5,6)
my.vector.2 = 1:6
my.vector.3 = seq(1,6)
my.vector.4 = rep(1,6)
my.vector.1;my.vector.2;my.vector.3;my.vector.4;
## [1] 1 2 3 4 5 6
## [1] 1 2 3 4 5 6
## [1] 1 2 3 4 5 6
## [1] 1 1 1 1 1 1
length(my.vector.1);my.vector.1[3];my.vector.1[c(2,4,6)];my.vector.1[-c(2,4,6)];
## [1] 6
## [1] 3
## [1] 2 4 6
## [1] 1 3 5
my.matrix.1 = matrix(my.vector.1, nrow=2)
my.matrix.2 = matrix(my.vector.1, nrow=3)
my.matrix.1;my.matrix.2;t(my.matrix.1);
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5
## [3,]    3    6
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6
dim(my.matrix.1);nrow(my.matrix.1);ncol(my.matrix.1)
## [1] 2 3
## [1] 2
## [1] 3
my.matrix.1 * 2
##      [,1] [,2] [,3]
## [1,]    2    6   10
## [2,]    4    8   12
my.matrix.1 * my.matrix.1
##      [,1] [,2] [,3]
## [1,]    1    9   25
## [2,]    4   16   36
my.matrix.1 %*% my.matrix.2
##      [,1] [,2]
## [1,]   22   49
## [2,]   28   64
  1. List형 변수: 자주 사용하는 lm같은 fitting의 결과물은 List형태의 결과가 많습니다. 각 원소에 어떤 형태의 원소도 넣을 수 있기 때문에 매우 편리합니다.(하지만 호환성에 불편함은 있습니다.)
name <- c("철수", "영희", "길동")
age <- c(21, 20, 31)
gender <- factor(c("M", "F", "M"))
my.list = list(name, age, gender, 1:7)
my.list[[1]];my.list[[2]];my.list[[3]];my.list[[4]];
## [1] "철수" "영희" "길동"
## [1] 21 20 31
## [1] M F M
## Levels: F M
## [1] 1 2 3 4 5 6 7
my.list[[1]][2];
## [1] "영희"
  1. Dataframe형 변수: List형 변수와 비슷하지만 벡터의 길이가 같아야 한다는 제한이 있습니다.
character <- data.frame(name, age, gender)
character;character$name;character$age;character$gender;
##   name age gender
## 1 철수  21      M
## 2 영희  20      F
## 3 길동  31      M
## [1] 철수 영희 길동
## Levels: 길동 영희 철수
## [1] 21 20 31
## [1] M F M
## Levels: F M
character[character$gender == "F", ];
##   name age gender
## 2 영희  20      F
character[character$age < 30 & character$gender=="M", ];
##   name age gender
## 1 철수  21      M
  1. Plot으로 그래프 그리기: option이 너무 많아서…
str(Puromycin)
## 'data.frame':    23 obs. of  3 variables:
##  $ conc : num  0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 ...
##  $ rate : num  76 47 97 107 123 139 159 152 191 201 ...
##  $ state: Factor w/ 2 levels "treated","untreated": 1 1 1 1 1 1 1 1 1 1 ...
##  - attr(*, "reference")= chr "A1.3, p. 269"
PuroTrt <- subset(Puromycin, state=="treated")
PuroUnTrt <- subset(Puromycin, state=="untreated")
plot(rate ~ conc, data=PuroTrt);

plot of chunk unnamed-chunk-6

plot(rate ~ conc, data=PuroTrt, xlim=c(0, 1.2), ylim=c(40, 210), xlab="concentration(ppm)", ylab="rates(counts/min/min)", cex.lab=1.2)

plot of chunk unnamed-chunk-6

plot(rate ~ conc, data=PuroTrt, pch=16, col=3, cex=1.5)
legend("bottomright", col=3, pch=16, "green point") ; 

plot of chunk unnamed-chunk-6

par(mfrow=c(1, 3))
plot(rate ~ conc, data=PuroTrt, type="p");
plot(rate ~ conc, data=PuroTrt, type="l");
plot(rate ~ conc, data=PuroTrt, type="b");

plot of chunk unnamed-chunk-6

R markdown

R markdown은 R code와 설명을 pdf나 html 파일과 같이 통합된 문서로 만드는 것을 도와줍니다. 기존의 R-Gui 환경에서 문서 작성은 꽤 직관적이지 못했습니다만, RStudio에서는 knitr라는 Package를 이용하여 손쉽게 만들 수 있습니다. 자세한 설명은 아래의 홈페이지로 대신하고, 수업시간에 예제를 다루겠습니다.

  1. http://rmarkdown.rstudio.com/

-> 빠른 영문 자료

  1. http://ko.wikipedia.org/wiki/%EB%A7%88%ED%81%AC%EB%8B%A4%EC%9A%B4

-> 빠른 한글 자료

Disclaimer : 이 자료는 최영근 조교님의 2013년 가을 Survival anlysis 실습 수업자료를 바탕으로 만들어졌습니다.