이전 자료구조 중 벡터와 데이터 프레임은 이전 게시물에 올려두었다.
벡터
https://metime.tistory.com/103
데이터 프레임
https://metime.tistory.com/104
이제 남은 자료구조는 행렬과 배열이다.
행렬(matrix)
행렬은 행과 열의 구조를 갖는 2차원 형태의 자료구조이나 데이터 프레임처럼 key 구조는 아니다.
벡터의 확장 구조이기 때문에 단일 데이터 타입으로만 구성되어 있다.
1. 생성
matrix( data = , # 데이터(1차원)
nrow = , # 행의 수
ncol = , # 컬럼 수
byrow = F , # 컬럼 우선 순위이기 때문에 이 옵션은 행 우선 순위 여부를 묻는다.
dimnames = ) # 행과 열의 이름(리스트로 전달)
Line 1의 결과를 보면 숫자가 컬럼방향으로 진행된다. 그래서 컬럼 우선 순위 진행이다.
여기서 byrow옵션에 T를 주면 숫자가 행 방향으로 진행된다. byrow가 행 우선 순위 진행 옵션이기 때문이다.
2. 구조
nrow, ncol 등으로 행과 열의 수를 셀 수 있으며, rownames와 colnames로 이름 확인도 가능하다.
Line 5에 열별 이름을 부여했으나 행렬에서는 이것이 key가 될 수는 없다.
dimnames를 사용하면 첫 번째 층이 행이름, 두 번째 층이 열이름으로 출력된다.
3. 색인
Line 6을 제외하고는 여러 색인이 가능하다.
https://metime.tistory.com/106
위 글에서도 작성하였지만 색인에는 차원축소가 포함되어 있는데, 차원 축소를 방지하는 색인 방법이 있다.
drop 이라는 옵션이다.
함수들마다 요구하는 데이터 차원이 있기 때문에 차원 축소 방지 기법에 있는 것이다.
5. 구조 변경
행렬은 정해져 있는 위치까지만 값을 가지고 있기 때문에 Line 6처럼 없는 바운드에 대해서는 오류가 발생한다(NULL 발생 아님).
그래서 Lind 6~8처럼 행 추가 또는 열 추가는 불가하다.
열 추가를 하기 위해서는 cbind 함수를, 행 추가를 하기 위해서는 rbind 함수를 사용하여야 한다(Line10, 11).
연습문제를 하나 풀어보자.
1) 아래 순서대로 행렬을 생성하여라(s1)
봄 가을
여름 겨울
2) 아래 순서대로 행렬을 생성하여라(s2)
봄 여름
가을 겨울
3) s2에서 여름과 겨울만 조회하여라
4) s2에서 초봄, 초가을의 값을 갖는 행을 추가하여라
5) s2에 초여름, 초겨울, 한겨울 값을 갖는 컬럼을 추가하여라
배열(array)
배열은 사실상 다차원 객체이며(다차원을 지원하는 자료구조), 단 하나의 데이터 타입으로만 구성이 가능하다. 주로 영상이나 음성, 이미지, 텍스트 등의 비정형 데이터 분석 시 사용된다.
1. 생성
array(data = , # 데이터
dim = , # 차원
dimnames = ) # 행, 열, 층 이름
위처럼 생성이 가능하다.
2. 구조 변경
Line 1은 구조를 확인하는 것으로 3열 4행 5층이라고 읽는다.
3. 색인
차원 축소가 발생하며 여기서도 차원 축소 방지를 위해서는 drop 옵션을 사용한다.
'배우기 > 복습노트[R과 분석]' 카테고리의 다른 글
[복습] 통계/분석 용어 정리 (0) | 2023.12.06 |
---|---|
[실습문제] 2023. 12. 5.(화) (2문제) (로또 번호 생성기, 이전값 가져오기 팁) (0) | 2023.12.06 |
[복습] R(programming language) 정규식 표현식과 정규식을 사용한 문자열 추출(str_extract, str_match) (0) | 2023.12.05 |
[실습문제] 2023. 12. 4.(월) (2문제) (0) | 2023.12.05 |
[복습] R(programming language)에서의 순위(rank, dense_rank) + 하루끝(20231204) (0) | 2023.12.04 |