3주

From Biocourse

Jump to: navigation, search
-- Matrix

>  matrix(1:6)                                                             ## 1:6을 이용하여 matrix를 구성한다. (6*1 matrix생성)
#      [,1]
#[1,]    1
#[1,]    2
#[1,]    3
#[1,]    4
#[1,]    5
#[1,]    6
>  matrix(1:6, nrow=2)                                              ## 1:6을 이용하여 matrix를 구성한다. (2*3 matrix생성)
#      [,1]  [,2]  [,3]
#[1,]    1     3     5
#[2,]    2     4     6

>  matrix(1:6, nrow=2, byrow=T)                            ## 1:6을 이용하여 matrix를 구성한다. (2*3 matrix생성)
#      [,1]  [,2]  [,3]                                                                        ## byrow=T를 지정하여 열을 기준으로 값을 정렬한다.
#[1,]    1     2     3
#[2,]    4     5     6


>  x= 3:8                                                                   ## x에 3:8을 할당한다.
>  matrix(x, 3, 2)                                                      ## x를 이용하여 3*2matrix를 구성한다.
#      [,1]  [,2]  
#[1,]    3     6     
#[2,]    4     7    

#[3,]    5     8   
 
>  matrix(x, ncol=2)                                                ## x를 이용하여 2렬을 가진 matrix를 구성한다.
#      [,1]  [,2]  
#[1,]    3     6     
#[2,]    4     7    
#[3,]    5     8 


>  matrix(x, ncol=3)                                                ## x를 이용하여 3렬을 가진 matrix를 구성한다.
#      [,1]  [,2]  [,3]
#[1,]    1     3     5
#[2,]    2     4     6


>  matrix(x, ncol=3, byrow=T)                              ## x를 이용하여 3렬을 가진 matrix를 구성한다.
#      [,1]  [,2]  [,3]                                                                     ## byrow=T를 지정하여 열을 기준으로 값을 정렬한다.
#[1,]    1     2     3
#[2,]    4     5     6





>  data=c(197, 8, 1.8, 1355, 58, 1.7, 2075, 81, 1.8)         ## data를 만든다.
>  country.data= matrix(data, nrow=3, byrow=T)          ## data를 이용하여 3행*3열 matrix를 만든다.
                                                                                          ## 자료는 행을 기준으로 채워 나간다.
>  country.data                                                                 ## country.data 
        [,1]   [,2]  [,3]
[1,]  197      8  1.8
[2,] 1355   58  1.7
[3,] 2075   81  1.8


>  dimnames(country.data)                                             ## country.data 의 행과 열의 이름을 출력한다.
NULL
>  dim(country.data)                                                       ## country.data 의 행과 열의 수를 출력한다.
[1] 3 3
>  countries= c(Austria, France, Germany)       ## countries 변수를 만든다.
>  variables= c(GDP, Pop, Inflation)                  ## variables 변수를 만든다.
>  dimnames(country.data)=list(countries, variables)    ## country.data 의 행과 열의 이름을 countries, variables로 할당한다.
>  country.data 
                  GDP Pop Inflation
Austri         197    8       1.8
France     1355   58       1.7
Germany 2075   81       1.8

>  dimnames(country.data)                                              ## country.data 의 행과 열의 이름을 출력한다.
[ [1] ]
[1] "Austri"  "France"  "Germany"
[ [2] ]
[1] "GDP"       "Pop"       "Inflation"


 
>  country.data[1, 2]                                                       ## country.data의 1행 2열의 값을 출력한다.
[1] 8
>  country.data[2, 1:3]                                                    ## country.data의 2행 1부터 3열의 값을 출력한다.
       GDP       Pop Inflation
   1355.0      58.0       1.7

>  country.data[2, ]                                                         ## country.data의 2행 전체의 값을 출력한다.
      GDP       Pop Inflation
   1355.0      58.0       1.7

>  country.data[1,2] = 10                                                ## country.data의 1행 2열의 값을 10으로 할당한다.
>  country.data                                                                ## country.data를 출력한다.
               GDP   Pop  Inflation
Austri        197   10       1.8
France     1355   58       1.7
Germany 2075   81       1.8

>  country.data[1,2] = 8                                                  ## country.data의 1행 2열의 값을 8으로 할당한다.
>

## Matrix의 4측 연산

>  A= matrix(0:5, 2, 3)                                                    ## 0부터 5의 값을 이용하여 2행 3열의 행렬을 만들어 A에 할당.
>  B= matrix(seq(0, 10, 2), 2, 3)                                     ## 0,2,4,6,8,10 값을 이용하여 2행 3열의 행렬을 만들어 B에 할당.
>  A+B                                                                            ## A, B 동일 행과 열의 값을 덧셈한다.
     [,1] [,2] [,3]
[1,]    0    6   12
[2,]    3    9   15
>  A-B                                                                             ## A, B 동일 행과 열의 값을 덧셈한다.
     [,1] [,2] [,3]
[1,]    0   -2   -4
[2,]   -1   -3   -5

>  A*B                                                                            ## A, B 동일 행과 열의 값을 곱셈한다.
     [,1] [,2] [,3]
[1,]    0    8   32
[2,]    2   18   50

>  A%*%B                                                                    ## A와 B의 행렬의 곱셈을 수행하나 A(2*3),B(2*3)으로 행과 열의 
                                                                                      ## 곱셈을 위한 갯수가 일치하지 않는다.
Error in A %*% B : non-conformable arguments
>  t(A)%*%B                                                               ## A와 B의 행렬의 곱셈을 수행하나 t(A)(3*2),B(2*3)으로 행과 열의
                                                                                     ##  곱셈을 위한 갯수를 일치시킨다. t()는 행과 열의 바꾸는 함수.
       [,1] [,2] [,3]
[1,]    2    6   10
[2,]    6   26   46
[3,]   10   46   82

>  A%*%t(B)                                                               ## A와 B의 행렬의 곱셈을 수행하나 A(2*3),t(B)(3*2)으로 행과 열의
                                                                                      ##  곱셈을 위한 갯수를 일치시킨다. t()는 행과 열의 바꾸는 함수.
     [,1] [,2]
[1,]   40   52
[2,]   52   70


 -- Data Frame
 
>  Area = c(84, 544, 358)                                                       ## 84, 544, 358로 Area를 만든다.
>  country.data= cbind(country.data, Area)                          ## country.data와 Area자료를 열로 합쳐 country.data만든다.
>  country.data                                                                       ## country.data를 출력
                 GDP Pop Inflation Area
Austria       197   8       1.8       84
France     1355  58       1.7     544
Germany 2075  81       1.8      358

>  Switzerland= c(256, 7, 1.8, 41)                                          ## 256, 7, 1.8, 41로 Switzerland를 만든다.
>  country.data= rbind(country.data, Switzerland)               ## country.data와 Switzerland자료를 행으로 합쳐 
                                                                                                ## country.data만든다.
>  country.data                                                                       ## country.data를 출력
                     GDP Pop Inflation Area
Austria           197   8       1.8       84
France         1355  58       1.7     544
Germany     2075  81       1.8      358
Switzerland   256   7       1.8         41


>  apply(country.data, 2, max)                                                ## 열마다 최대값을 계산하여 출력한다.
      GDP       Pop Inflation      Area
   2075.0      81.0       1.8        544.0
                       

>  apply(country.data, 2, summary)                                       ## 열마다 최소값, 1사분위수,중앙값,평균,3사분위수,최대값 출력.
               GDP   Pop   Inflation   Area
Min.        197.0  7.00     1.700  41.00
1st Qu.    241.3  7.75     1.775  73.25
Median   805.5 33.00     1.800 221.00
Mean      970.8 38.50     1.775 256.80
3rd Qu. 1535.0 63.75     1.800 404.50
Max.     2075.0 81.00     1.800 544.00
--------------------------------------------------
>  EU = c(“EU”, “EU”, “EU”, “non-EU”)                            ## (“EU”, “EU”, “EU”, “non-EU”) 를 EU에 저장한다.
>  country.data1= cbind(country.data, EU)                           ## country.data와 EU를 열로 결합한다.
>  country.data1                                                                     ## country.data1을 출력한다.
                      GDP    Pop  Inflation Area  EU     
Austria          "197"  "8"  "1.8"     "84"  "EU"   
France        "1355" "58" "1.7"     "544" "EU"   
Germany     "2075" "81" "1.8"     "358" "EU"   
Switzerland   "256"  "7"  "1.8"     "41"  "non-EU"


>  country.frame= data.frame(country.data, EU)                ## country.data와 EU를 열로 data.frame을 이용하여 결합.
>  country.frame                                                                   ## coutrny.frame을 출력
                  GDP   Pop  Inflation Area     EU
Austria          197     8       1.8   84           EU
France         1355   58       1.7  544         EU
Germany     2075   81       1.8  358         EU
Switzerland   256     7       1.8   41   non-EU
>
## cbind의 경우에 숫자형 자료와 문자형 자료를 결합 결과 전체가 문자형으로 바꿔진다.

## 그러나, data.frame을 사용하면, 숫자형 문자형을 유지하면서 결합이 가능하여 유용하다.


실습 

image:r-4-3.jpg


위의 자료는 microarray자료를 분석시 사용되는 자료이다.
여러가지 이유로 실험중 missing이 발생하며, 이렇한 missing자료는 통계적 분석을 수행할때 어려움을 발생 시킨다. 
본 실습은 이런 missing이 발생된 자료의 특징을 살펴보고, missing자료를 보정하는 과정을 수행하고자 한다.


1. homework-2week.txt 자료 읽기 : (Hint : read.table 사용) 
    ==> 3week : solution1

2. 전체 missing수 계산
    ==> 3week : solution2

3. Gene 별 missing 자료 계산
  i) missing 수의 분포 계산 (각 유전자별로 missing수를 계산후 missing수의 분포를 계산해 보아라. (hint: table사용) )
  ==>  3week : solution3-1

  ii) missing 자료를 0으로 채워 넣는다.
    ==> 각 유전자 별 평균, 분산, 표준편차, 1Q(사분위수), 3Q(사분위수) 계산
          ==>3week : solution3-2

4. sample 별 missing 자료 계산
  i) missing 수의 분포 계산 (각 실험별로 missing수를 계산후 missing수의 분포를 계산해 보아라. (hint: table사용) )
    ==>  3week : solution4-1

  ii) missing 자료를 0으로 채워 넣는다.
    ==> 각 실험 별 평균, 분산, 표준편차, 1Q(사분위수), 3Q(사분위수) 계산
           ==>  3week : solution4-2