목차
- 행렬
- 행렬 생성
- 행렬 인덱싱
- 행렬 연산
- 행렬 결합
- state.x77 데이터
1. 행렬
행렬, 매트릭스(matrix)는 2차원 데이터로 데이터 테이블의 모든 셀의 값들이 동일한 자료형이다.
데이터 테이블의 구조는 행(row), 관측값(observation)과 열(column), 컬럼, 변수(variable) 그리고 셀(cell)로 구성되어 있다.
2. 행렬 생성
매트릭스(matrix)는 2차원 데이터로, 매트릭스의 모든 셀에 저장되는 값은 동일한 자료형이어야 한다.
매트릭스를 생성할 때는 matrix() 함수를 사용한다.
matrix() 함수 안에 값, nrow 옵션에 행의 개수, ncol 옵션에 열의 개수를 입력하여 매트릭스를 생성한다.
그렇게 생성한 매트릭스의 행과 열의 이름을 확인해 보면 NULL 값인 것을 확인할 수 있다.
NULL로 나타나는 행과 열의 이름을 생성할 때는 각 rownames() 함수와 colnames() 함수를 사용한다.
각 함수 안에 행과 열의 이름을 지정해 줄 매트릭스 이름을 넣어주고 벡터로 이름을 생성하여 넣어주면 된다.
벡터를 생성하는 방법은 아래 글에 자세하게 나와있으니 참고하면 될 것 같다.
2024.03.24 - [Data Science/R] - [R 공부하기] 2. 변수와 벡터 - 우당탕탕 개발자 되기 프로젝트
그렇게 행과 열의 이름을 생성하고 확인해 보면 행과 열의 이름이 생긴 것을 확인할 수 있다.
행과 열의 이름을 확인할 때는 rownames() 함수와 colnames() 함수를 사용할 수도 있고, dimnames() 함수를 사용하여 행과 열의 이름을 한 번에 확인할 수도 있다.
또한 dimnames() 함수를 사용하여 행과 열 이름을 변경할 수도 있다.
rownames() 함수와 colnames() 함수를 사용하여 행과 열 이름을 생성한 것과 동일하게 사용하면 되는데, dimnames() 함수 안에 행 이름과 열 이름 바꿀 매트릭스 이름을 넣고 벡터로 생성한 행 이름과 열 이름을 리스트 안에 ,(콤마)로 연결해 주면 된다.
매트릭스를 생성할 때는 기본적으로 열 방향으로 값이 채워진다.
여기서 매트릭스를 생성할 때 matrix() 함수에 byrow 옵션을 TRUE로 지정해 주면 행 방향으로 값이 채워진다.
그리고 dimnames 옵션으로 매트릭스를 생성할 때 행 이름과 열 이름까지 지정해 줄 수 있다.
dimnames 옵션에 행과 열 이름을 지정해 줄 때는 dimnames() 함수를 사용해 행과 열 이름을 변경한 것과 동일하게 작성하면 된다.
3. 행렬 인덱싱
생성한 매트릭스에서 특정 값을 추출하는 것을 행렬 인덱싱이라고 한다.
행렬 인덱싱을 할 때는 행렬 이름을 적고 [ ] 안에 추출할 행과 열의 위치를 지정해 주면 된다.
행렬 이름[행 위치, 열 위치] 형태로 매트릭스에서 특정 값을 추출하면 된다.
이때 위치를 지정하지 않으면 모든 행과 열을 지정하는 것으로 간주된다.
또한 벡터에서 인덱싱할 때처럼 벡터로 위치를 지정하여 여러 개를 한 번에 지정할 수도 있다.
특정 값을 추출할 때 매트릭스의 행과 열에 이름이 있다면 행과 열의 이름으로 지정하여 값을 추출할 수도 있다.
이때도 마찬가지로 지정하지 않으면 모든 데이터를 지정하는 것으로 간주된다.
또한 벡터로 여러 이름을 지정하여 여러 개를 한 번에 지정할 수도 있다.
4. 행렬 연산
두 개의 행렬을 연산하면 각 매트릭스에서 동일한 위치에 있는 셀의 값을 연산한다.
그리고 t() 함수는 행렬을 전치 행렬로 바꿔준다.
전치 행렬은 각 행과 열의 위치가 바뀌는 것을 말한다.
5. 행렬 결합
여러 행렬을 하나의 행렬로 결합할 수도 있다.
행렬을 결합하는 방법은 2가지가 있는데, 행렬을 행 방향으로 결합하는 방법과 열 방향으로 결합하는 방법이 있다.
행 방향으로 결합할 때는 rbind() 함수를 사용하고, 열 방향으로 결합할 때는 cbind() 함수를 사용한다.
행 방향으로 결합하면 매트릭스가 위아래로 결합되고, 열 방향으로 결합하면 매트릭스가 양옆으로 결합된다.
6. state.x77 데이터
state.x77 데이터를 확인해 보고 데이터의 구조를 확인해 보면 state.x77 데이터는 matrix, array 구조이다.
매트릭스인지 확인해 보면 확인해 보면 state.x77 데이터는 매트릭스이고, 배열인지도 확인해 보면 state.x77 데이터는 배열이다.
state.x77 데이터가 데이터프레임인지 확인해 보면 데이터프레임이 아니라는 것도 확인할 수 있다.
state.x77 데이터를 데이터프레임 형태로 변환하기 위해선 as.data.frame() 함수를 사용하면 된다.
데이터프레임 형태로 전환한 뒤 데이터를 확인해 보면 매트릭스일 때와 별로 차이가 없는 것처럼 보이지만 구조를 확인해 보면 데이터프레임으로 바뀐 것을 확인할 수 있다.
데이터프레임에 대한 내용은 다음에 다뤄보도록 하겠다.
'Data Science > R' 카테고리의 다른 글
[R 공부하기] 8. 데이터 전처리 - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.07.12 |
---|---|
[R 공부하기] 7. 다중변수 자료 탐색 - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.04.24 |
[R 공부하기] 6. 단일변수 자료 탐색 - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.04.23 |
[R 공부하기] 5. 조건문, 반복문, 함수 - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.04.12 |
[R 공부하기] 4. 데이터프레임 - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.04.10 |
[R 공부하기] 2. 변수와 벡터 - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.03.24 |
[R 공부하기] 1. R, R Studio 설치 및 사용 - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.03.15 |