3주
From Biocourse
-- 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
# [,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
# [,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
# [,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
# [,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]
#[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
#[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
[,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
[1] 3 3
> countries= c(“Austria”, “France”, “Germany”) ## countries 변수를 만든다.
> variables= c(“GDP”, “Pop”, “Inflation”) ## variables 변수를 만든다.
> 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
> 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"
[1] "Austri" "France" "Germany"
[ [2] ]
[1] "GDP" "Pop" "Inflation"
[1] "GDP" "Pop" "Inflation"
> country.data[1, 2] ## country.data의 1행 2열의 값을 출력한다.
[1] 8
[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행 전체의 값을 출력한다.
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으로 할당한다.
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으로 할당한다.
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
[,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
[,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)으로 행과 열의
## 곱셈을 위한 갯수가 일치하지 않는다.
> t(A)%*%B ## A와 B의 행렬의 곱셈을 수행하나 t(A)(3*2),B(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)으로 행과 열의
[,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
[,1] [,2]
[1,] 40 52
[2,] 52 70
-- Data Frame
> 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
> 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
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 ## 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
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
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을 이용하여 결합.
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
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을 사용하면, 숫자형 문자형을 유지하면서 결합이 가능하여 유용하다.
실습

위의 자료는 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
## 그러나, data.frame을 사용하면, 숫자형 문자형을 유지하면서 결합이 가능하여 유용하다.
실습

위의 자료는 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
