기본문법 4. 자료구조 matrix [데이터 분석 with R]

안녕하세요. 언제나 휴일에 언휴예요.

지난 강의에서 같은 종류의 데이터를 선형 집합인 vector를 살펴보았어요.

#벡터
> v1 = c(1,2,3,4,5,6)

이번 강의는 matrix 소개와 기본적인 사용방법을 강의합니다.

matrix 생성
원하는 요소 확인하기
matrix 결합1. 열 결합  cbind
matrix 결합2. 행 결합  rbind
전치 행렬을 구할 때 t()
행렬 헤더에 이름 부여 dimnames

matrix 생성

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)

matix는 같은 종류의 데이터를 평면인 사각 영역에 보관하는 자료구조입니다.

matrix 함수를 이용하여 생성할 수 있어요.

첫 번째 인자로 matrix를 구성할 자료를 전달합니다.

nrow에 행 개수, ncol에 열 개수를 전달하여 생성합니다.

> A=matrix(c(5,7,3,4,8,6),nrow=2,ncol=3)
> A
     [,1] [,2] [,3]
[1,]    5    3    8
[2,]    7    4    6

생성하는 순서를 보시면 열(column) 먼저 만드는 것을 알 수 있어요.

행(row) 먼저 만들고자 한다면 byrow=TRUE로 지정하세요.

> A=matrix(c(5,7,3,4,8,6),nrow=2,ncol=3,byrow=TRUE)
> A
     [,1] [,2] [,3]
[1,]    5    7    3
[2,]    4    8    6

원하는 요소 확인하기


matrix의 원하는 행을 표현할 때는 행렬[행 번호,] 형태로 표현합니다.

행렬[,열번호]로 원하는 열을 표현할 수 있습니다.

> A
     [,1] [,2] [,3]
[1,]    5    3    8
[2,]    7    4    6
> A=matrix(c(5,7,3,4,8,6),nrow=2,ncol=3,byrow=TRUE)
> A
     [,1] [,2] [,3]
[1,]    5    7    3
[2,]    4    8    6
> A[2,]
[1] 4 8 6
> A[,3]
[1] 3 6

물론, 여러 개의 행과 여러 개의 열도 표현 가능합니다.

c함수를 이용하거나 start:end 등 다양한 형태로 여러 개의 행이나 열을 표현할 수 있어요.

> A
     [,1] [,2] [,3]
[1,]    5    7    3
[2,]    4    8    6
> A[,c(1,3)]
     [,1] [,2]
[1,]    5    3
[2,]    4    6
> A[,1:2]
     [,1] [,2]
[1,]    5    7
[2,]    4    8
> A
     [,1] [,2] [,3]
[1,]    5    7    3
[2,]    4    8    6
> A[,1:2]
     [,1] [,2]
[1,]    5    7
[2,]    4    8
> A
     [,1] [,2] [,3]
[1,]    5    7    3
[2,]    4    8    6
> A[,c(1,3)]
     [,1] [,2]
[1,]    5    3
[2,]    4    6
> A[,1:2]
     [,1] [,2]
[1,]    5    7
[2,]    4    8

행과 열을 모두 표현해서 원하는 쉘을 표현할 수도 있습니다.

다음은 행렬 A의 1행 1열의 값을 확인하는 것과 1행 1열의 값을 7로 변경하는 예입니다.

> A
     [,1] [,2] [,3]
[1,]    5    7    3
[2,]    4    8    6
> A[1,1]
[1] 5
> A[1,1]=7
> A
     [,1] [,2] [,3]
[1,]    7    7    3
[2,]    4    8    6

matrix 결합1. 열 결합 cbind

matrix의 행의 개수가 같을 때 cbind함수로 열 결합을 할 수 있어요.

> A=matrix(c(5,7,3,4,8,6),nrow=2,ncol=3,byrow=TRUE)
> A
     [,1] [,2] [,3]
[1,]    5    7    3
[2,]    4    8    6
> B=matrix(c(1,2),nrow=2,ncol=1,byrow=TRUE)
> B
     [,1]
[1,]    1
[2,]    2
> C = cbind(A,B)
> C
     [,1] [,2] [,3] [,4]
[1,]    5    7    3    1
[2,]    4    8    6    2

matrix 결합2. 행 결합 rbind

matrix의 열의 개수가 같을 때 rbind함수로 열 결합을 할 수 있어요.

> A = matrix(c(1,2,3,4,5,6,7,8,9),nrow=3,ncol=3)
> B = matrix(c(10,11,12),nrow = 1,ncol=3)
> A
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> B
     [,1] [,2] [,3]
[1,]   10   11   12
> C = rbind(A,B)
> C
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
[4,]   10   11   12

전치 행렬을 구할 때 t()

t(x) : returns transpose of x

전치(transpose) 행렬을 구할 때 t함수를 사용하세요.

> A = matrix(c(1,2,3,4,5,6),nrow=2,ncol=3)
> A
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> B=t(A)
> B
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6

행렬 헤더에 이름 부여 dimnames

dimnames(x)

dimnames(x) <- value

dimnames(x) = value

행렬 헤더에 이름을 부여하거나 설정할 때 dimnames 함수를 사용하세요.

> A = matrix(c(1,2,3,4,5,6),nrow=2,ncol=3)
> dimnames(A) = list(c("r1","r2"),c("c1","c2","C3"))
> A
   c1 c2 C3
r1  1  3  5
r2  2  4  6
> dimnames(A)
[[1]]
[1] "r1" "r2"

[[2]]
[1] "c1" "c2" "C3"