참고도서: R 통계 프로그래밍의 이해 - 차영준, 박진표 (자유아카데미) 2장
www.yes24.com/Product/Goods/68712840
R 통계 프로그래밍의 이해
'최근에 빅데이터와 관련된 용어들이 많이 사용되고 있다. 인공지능, 머신러닝, 데이터 과학, 데이터 과학자, 4차 산업혁명 등과 같은 단어들을 많이 접하게 된다. 이처럼 많은 사람들이 빅데이
www.yes24.com
> #### 2.4 행렬 ####
>
> # 2.4.1 matrix() 함수를 이용한 행렬의 생성 #
>
> #matrix() 함수 이용한 행렬의 생성
> matrix(c(1,2,3,4,5,6), ncol=2) ## 열 2개인 행렬 생성
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> matrix(c(1,2,3,4,5,6), nrow=2) ## 행 2개인 행렬 생성
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> matrix(c(1,2,3,4,5,6), nrow=2, byrow = FALSE) ## 행 기준 FALSE = 열 기준으로 행렬 생성 (기본값)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> matrix(c(1,2,3,4,5,6), nrow=2, byrow = TRUE) ## 행 기준으로 행렬 생성
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
>
> #matrix() 함수의 인수 dimnames
> matrix(c(1,2,3,4,5,6), nrow=2, dimnames = list(c("row1","row2"),c("column1","column2","column3")))
column1 column2 column3
row1 1 3 5
row2 2 4 6
> ## 원소가 1~6까지인 2행짜리 행렬에 row1~2, column1~3까지의 이름 부여
> mData <- matrix(c(1,2,3,4,5,6), nrow = 2)
> dimnames(mData) <- list(c("row1","row2"),c("column1","column2","column3"))
> mData ## 위와 동일한 방법, mData라는 변수를 이용
column1 column2 column3
row1 1 3 5
row2 2 4 6
>
> #rownames()와 colnames()를 이용한 행과 열에 이름 부여
> mData <- matrix(c(1,2,3,4,5,6), nrow=2)
> rownames(mData) <- paste0("row", 1:2) ## mData 행렬에 행 이름을 "row1"과 "row2"로 부여
> mData
[,1] [,2] [,3]
row1 1 3 5
row2 2 4 6
>
> colnames(mData) <- paste0("column", 1:3) ## mData 행렬에 열 이름을 "column1"에서 "column3"으로 부여
> mData
column1 column2 column3
row1 1 3 5
row2 2 4 6
>
>
> # 2.4.2 cbind()와 rbind() 함수를 이용한 행렬 생성 #
> w <- 1:3
> x <- 4:6
> y <- 7:9
> z <- 10:12
>
> cbind(w,x,y,z) ## c(olumn)bind: 열 단위로 묶어 행렬 생성
w x y z
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> rbind(w,x,y,z) ## r(ow)bind: 행 단위로 묶어 행렬 생성
[,1] [,2] [,3]
w 1 2 3
x 4 5 6
y 7 8 9
z 10 11 12
>
> # 2.4.3 dim()을 이용한 행렬 생성 #
> a <- 1:6
> dim(a) = c(2,3) ## 2 x 3 행렬 생성
> a
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
>
> a <- c(22,45,17,62,20,87,22,45)
> dim(a) = c(4,2)
> a
[,1] [,2]
[1,] 22 20
[2,] 45 87
[3,] 17 22
[4,] 62 45
>
> # 2.4.4 첨자 []을 이용한 행렬의 원소 추출 #
> M <- matrix(1:15, nrow=3) ## 원소가 1부터 15까지인, 3행짜리 행렬 생성
> M
[,1] [,2] [,3] [,4] [,5]
[1,] 1 4 7 10 13
[2,] 2 5 8 11 14
[3,] 3 6 9 12 15
> M[1,1] ## 1행 1열 원소 추출
[1] 1
> M[1,] ## 1행 원소 전체 추출
[1] 1 4 7 10 13
> M[,1] ## 1열 원소 전체 추출
[1] 1 2 3
> M[1:2,] ## 1~2행 원소 전체 추출
[,1] [,2] [,3] [,4] [,5]
[1,] 1 4 7 10 13
[2,] 2 5 8 11 14
> M[-1,] ## 1행 원소 제외한 전체 추출
[,1] [,2] [,3] [,4] [,5]
[1,] 2 5 8 11 14
[2,] 3 6 9 12 15
> M[-1:-2,] ## 1~2행 원소 제외한 전체 추출 (-(1:2) = -1:-2)
[1] 3 6 9 12 15
> M[,1:2] ## 1~2열 원소 전체 추출
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> M[,-(1:2)] ## 1~2열 원소 제외한 전체 추출
[,1] [,2] [,3]
[1,] 7 10 13
[2,] 8 11 14
[3,] 9 12 15
>
> # 2.4.5 행렬의 사칙연산 #
> A <- matrix(c(1,2,3,4), ncol=2) ## 열이 2개인 행렬 생성
> A
[,1] [,2]
[1,] 1 3
[2,] 2 4
> B <- matrix(c(4,3,2,1), ncol=2)
> B
[,1] [,2]
[1,] 4 2
[2,] 3 1
>
> A+B
[,1] [,2]
[1,] 5 5
[2,] 5 5
> A-B
[,1] [,2]
[1,] -3 1
[2,] -1 3
> A*B
[,1] [,2]
[1,] 4 6
[2,] 6 4
> A/B
[,1] [,2]
[1,] 0.2500000 1.5
[2,] 0.6666667 4.0
> A^2 ## A 행렬 원소의 2제곱한 값
[,1] [,2]
[1,] 1 9
[2,] 4 16
>
>
> # 2.4.6 행렬의 곱셈 #
> A %*% B
[,1] [,2]
[1,] 13 5
[2,] 20 8
> t(A) %*% B ## 행렬 A의 전치행렬과 행렬 B의 곱
[,1] [,2]
[1,] 10 4
[2,] 24 10
> crossprod(A,B) ## 행렬 A의 전치행렬과 행렬 B의 곱
[,1] [,2]
[1,] 10 4
[2,] 24 10
>
> # 2.4.7 행렬의 역행렬 #
> A <- matrix(c(1,2,3,4), ncol=2)
> A
[,1] [,2]
[1,] 1 3
[2,] 2 4
> solve(A) ## solve() = 역행렬 구하는 함수
[,1] [,2]
[1,] -2 1.5
[2,] 1 -0.5
> b=c(1,5)
> solve(A,b) ## Ax=b의 해 x를 구하는 코딩
[1] 5.5 -1.5
> solve(A) %*% b
[,1]
[1,] 5.5
[2,] -1.5
>
>
>
> #### 2.5 배열 ####
>
> #array() 함수를 이용한 배열의 생성
> array(1:12, c(2,3,2)) ## 2 X 3 X 2 배열 생성
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
>
> #array() 함수의 인수 dimnames
> array(1:12, c(2,3,2), dimnames=list(c("r1","r2"),c("c1","c2","c3"),c("Exam1","Exam2")))
, , Exam1
c1 c2 c3
r1 1 3 5
r2 2 4 6
, , Exam2
c1 c2 c3
r1 7 9 11
r2 8 10 12
> ## 배열 생성 시 이름 삽입: 행=r1~r2, 열=c1~c3, 면=Exam1~Exam2
'데이터 [Data] > R' 카테고리의 다른 글
R 데이터 가공: 결측값 처리, 그룹별 요약통계량 계산, 변환 (0) | 2021.04.29 |
---|---|
R 데이터 가공: 정렬, 결합 및 분리 (0) | 2021.04.28 |
R 데이터 가공: 행과 열의 선택, 변수 추가 및 삭제 (데이터 프레임) (0) | 2021.04.27 |
R 데이터 구조: 데이터 프레임, 리스트, 데이터 테이블 (0) | 2021.04.24 |
R 데이터 구조: 벡터, 팩터 (0) | 2021.04.20 |
댓글