'Matrix'에 해당되는 글 2건

  1. 2019.09.07 [데이터 다루기] Matrix 편
  2. 2019.08.27 [데이터 구조] vector? factor? matrix? data.frame?

이번에 다뤄볼 주제는 Matrix입니다.

앞서 소개를 드린것 처럼 matrix는 2차원 형태의 데이터입니다.

익숙한 엑셀 데이터처럼 2차원 표 형태라고 생각하시면 편할 것 같아요.

Matrix는 2차원 구조다보니 행(row), 열(column)이 존재합니다. 행을 row, 열을 col이라고 부르도록 할께요.

그럼 간단하게 Matrix를 만들어볼까요.

matrix(요소, row 수, col 수)를 이용하여 만들 수 있습니다.

보시는 것 처럼 숫자 1~6이 들어가 있는 matrix를 만들었어요.

첫 번째 col에 먼저 1~3이 채워지고 그다음 col에 4~6이 채워집니다.

만약 row순서대로 숫자를 채우고 싶다면 byrow=TRUE를 추가해주시면 됩니다.

보시는 것 처럼 첫 번째 row에 1,2가 먼저 채워지고 두 번째 row에 3,4가 채워집니다.

Matrix에는 row와 col의 index가 부여가 됩니다. 즉 2개의 index가 부여되며 순서는 [row, col]이에요.

예시에서 보이듯 2번째 row의 2번째 col에 해당하는 값인 5를 출력해 줍니다.

만약 하나의 값이 아닌 여러개를 동시에 출력하고 싶다면 어떻게 하면 될까요?

그 방법은 Index에 숫자 하나를 넣는 것이 아닌 vector를 넣는 것입니다.

예시에서 보이듯 z라는 matrix에서 2, 3번째 row와 1, 3번째 col에 해당하는 2, 3, 10, 11이 matrix형태로 출력됩니다.

그렇다면 일부만 뽑는것이 아니라 row전체를 뽑거나 col전체를 뽑아주려면 해당하는 index를 모두 입력해야 할까요?

꼭 그럴 필요는 없습니다.

만약 row를 뽑는다면 col에 해당하는 index를 빈칸으로 두시면 됩니다.

반대로 col을 뽑는다면 row에 해당하는 index를 빈칸으로 두시면 됩니다.

예시에서 보이듯 index를 [1, ]로 두면 z matrix의 첫 번째 row인 1, 5, 9, 13을 출력해주고, index를 [, 1]로 두면 z matrix의 첫 번째 col인 1, 2, 3, 4를 출력해줍니다.

 

Matirx의 요소 일부를 변경하는 방법은 vector와 마찬가지로 index로 뽑아낸 다음 할당을 하면 됩니다.

가운데 숫자만 100, 200, 300, 400으로 변경된 것을 볼 수 있어요.

Matrix의 경우 vector와 마찬가지로 한가지 형태의 데이터만 넣을 수 있습니다.

만약 문자를 넣게되면 숫자가 문자로 강제 변환됩니다.

(이 내용은 제가 이전에 올려둔 [데이터 구조]편을 참고해주세요! https://www.bicbear.com/7)

자 그렇다면 만들어진 matrix에서 row나 col을 추가하는 방법은 무엇이 있을까요?

바로 rbind(), cbind()라는 함수를 사용하는 거에요.

말 그대로 rbind는 row를 cbind는 col를 붙여주는 함수입니다.

예시에서 보이듯 vector 또는 matrix를 바로 붙일 수 있습니다. 이때 주의하셔야 할 점은 row나 col수를 맞춰줘야 하는건데요.

만약 맞추지 않고 사용한다면 경고 메시지가 뜨면서 숫자를 반복해서 넣거나, 일부가 잘릴 수 있습니다.

row 수가 3개인데 2개만 넣은 경우 숫자 하나가 반복되어 입력되고, 4개를 넣은 경우 남은 하나가 입력되지 않습니다.

 

예외적으로 만약 추가할 row나 col에 같은 숫자만 입력하고 싶다면 꼭 vector형태로 갯수 맞춰서 넣을 필요없이 숫자 하나만 입력해도 가능합니다.

 

이 다음 글에서 다뤄볼 data.frame과 matrix는 매우 많이 사용되는 데이터 구조에요!

익숙해지시면 많이 도움 되실거에요~!

Posted by 코딩곰돌이
,

이번에 다뤄볼 주제는 데이터의 구조에요~

유형?구조? 처음 접하시는 분은 헷갈릴 수 있어요.

하지만 정확히 어떻게 들어가는지 알아야 나중에 데이터를 다루고, 원하는 그림을 그리는데 도움이 될꺼에요.

R에서 사용하는 데이터의 구조는 1차원 형태의 vector, factor, 2차원 형태의 matrix, data.frame 그리고 다양한 데이터 형태의 집합인 list형태가 있습니다.

 

그럼 하나하나 간단히 살펴보도록 하겠습니다.

Vector의 경우 가장 기본적인 데이터 구조인데요.

그냥 단순히 숫자나 문자가 일렬로 모여있는 집합이라고 생각하면 됩니다.

예를 들어 한 반에 있는 학생들의 수학 성적이 70, 60, 90, 55, 95, 80, ... 이렇게 있다고 할때, 수학 성적을 모은것이 하나의 vector가 될 수 있습니다.

vector를 만들기 위해서는 c( )를 사용하며, 들어가는 각 값들을 콤마( , )로 구분시켜 주면 됩니다.

보시는 것처럼 콤마로 구분시켜주고 값을 넣지 않는다면 에러가 나타납니다.

또한 벡터에는 한가지 유형의 데이터만 들어갈 수 있습니다.

숫자는 숫자만, 문자는 문자만 들어갈 수 있어요.

만약 숫자와 문자를 같이 넣어주면 숫자는 문자로 강제 변환됩니다.

강제 변환되는 기준은 다음과 같습니다.

c(숫자, 문자) -> 문자

c(숫자, 논리) -> 숫자

c(숫자, 복소수) -> 복소수

즉 문자 > 복소수 > 숫자 > 논리 순서입니다.

 

Factor는 vector와 비슷한 모습으로 1차원 구조의 문자나 숫자의 집합입니다.

vector와 다르게 level이라는 것이 존재하는데요.

통계에서 범주형 자료 다루기 위하여 만들어진 데이터 구조이기 때문입니다.

예를 들어 혈액형의 경우 A, B, AB, O형 같이 카테고리로 나누어지는 데이터에서 사용됩니다.

factor(vector) 로 만들 수 있습니다.

factor에는 카테고리가 level로 나타나며, 문자형태로 보이지만, levels의 index로 부여가 되어있습니다.

as.numeric이란 함수를 사용하여 숫자로 변환시켜보면 factor1에 있던 값들이 levels의 index로 변하는 것을 볼 수 있습니다.

 

다음으로 볼 구조는 matrix입니다.

Row와 column으로 이루어진 2차원 형태입니다.

우리에게 익숙한 표 형태의 데이터라고 생각하시면 됩니다~!

matrix(인자, row 수, col 수) 로 만들 수 있습니다.

Vector처럼 한 matrix내에는 한 가지 유형의 데이터만 넣을 수 있습니다.

 

Data.frame은 matrix와 같이 row와 column으로 이루어진 2차원 구조입니다.

matrix와 거의 비슷하지만 차이점은 하나의 data.frame안에 여러 유형의 데이터를 넣을 수 있습니다. (column별로 동일하게 넣을 수 있습니다.)

data.frame(matrix)로 생성할 수 있습니다.

 

마지막으로 list의 경우 list(vector, factor, matrix, data.frame,...) 로 만들 수 있습니다.

데이터 구조 상관없이 넣어줄 수 있습니다.

다음 예시에서 v1은 vector, f1은 factor, m1은 matirx, d.f.set.up은 data.frame입니다.

 

R에서 사용되는 데이터의 구조에 대해 알아보았습니다.

다음 글에서는 각 데이터구조에 따라 다루는 방법을 알아보도록 할께요!

'R program' 카테고리의 다른 글

[데이터 다루기] Factor편  (0) 2019.09.03
[데이터 다루기] Vector편  (0) 2019.09.01
[데이터 유형] 숫자? 문자?  (0) 2019.08.23
[실행] 처음 실행 해보기!  (0) 2019.08.20
[설치] R 프로그램 설치  (0) 2019.08.18
Posted by 코딩곰돌이
,