앞서의 변수 입력은 그냥 1차원 데이터의 입력이었습니다. 이와 같은 데이터 형태는 스칼라라고 불리는데, 사실 벡터나 행렬의 특수한 형태라고 할 수 있을 것입니다. 그런데 R에서의 데이터 처리 및 분석은 대개 이런 1차원 데이터를 대상으로 이뤄지지 않습니다. R에서 주로 처리하게 되어 있는 정돈된 데이터는 대개 아래와 같은 식입니다.
영어 수학 국어
학생A 76 78 82
학생B 87 91 88
학생C 78 88 87
이와 같은 형태의 데이터는 다양한 정보를 2차원 평면에서 계속 확장할 수 있습니다. 예를 들어 1000가지 과목을 저장할 수도 있고 10만명의 학생 성적을 저장할 수도 있습니다. 흔히 데이터 파일이라고 하면 가장 쉽게 접할 수 있는 형태입니다. 물론 데이터 처리를 위해 입력을 한다면 엑셀 같은 스프레드시트 프로그램에서 이렇게 입력을 해야 합니다. 정돈된 데이터에 대한 이야기는 나중에 다시 하겠지만, 일반적으로 R에서 다루는 데이터 역시 이런 형식입니다.
이는 수학에서 말하는 행렬 형식이기도 합니다. R 역시 다양한 행렬 작성 방법을 제공합니다. 가장 기본적인 방법은 함수 matrix를 사용하는 것입니다.
> matrix(1:8,nrow=2,ncol=4)
[,1] [,2] [,3] [,4]
[1,] 1 3 5 7
[2,] 2 4 6 8
> matrix(1:8,nrow=4,ncol=2)
[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
어떻게 사용하는 것인지는 쉽게 이해가 될 것입니다. matrix 안에 원하는 수열을 적고 이를 행(nrow), 열 (ncol)로 나타내는 것이죠. 처음에는 2행 4열 행렬을 다음에는 4행 2열 행렬을 만들었습니다. 기본은 위에서 아래 순서로 숫자를 배열하지만 왼쪽에서 오른쪽으로 만들수도 있습니다. byrow=T로 말이죠.
> matrix(1:8,nrow=2,ncol=4,byrow=T)
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
> matrix(1:8,nrow=4,ncol=2,byrow=T)
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
[4,] 7 8
이렇게 만든 행렬을 변수로 대입할 수 있습니다.
> x<-matrix nrow="2,ncol=4,byrow=T)</span">-matrix>
> x
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
>
이는 가장 기본적인 데이터 시트라고 할 수 있습니다. 이 데이터 시트에서 원하는 내용을 추출하는 방법 역시 간단합니다. x에서 x[]를 표시해주기만 하면 됩니다. 2열 2행의 숫자를 고르기 위해서는 x[2,2]를 선택하면 됩니다.
> x
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
> x[2,2]
[1] 6
나중에 데이터를 일부 선택하고 가공하는 내용에서 설명드리겠지만, 다양한 방법으로 데이터에서 일부 조건에 맞는 데이터를 추출할 수 있습니다. 예를 들어 1,2행에서 1~3열의 데이터를 모아 y라는 새로운 데이터 시트를 만드는 경우를 생각해 봅니다. 이 경우 x[c(1,2),c(1,2,3)] 하는 식으로 c()라는 방식으로 선택이 가능합니다. 반대로 선택하기 싫은 경우 - 기호로 지정할 수 있습니다.
> x
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
> x[2,2]
[1] 6
> y<-x c="" span="">-x>
> y
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 5 6 7
> z<-x c="" span="">-x>
> z
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 5 6 7
이는 기본적인 데이터 추출인데 나중에 더 상세하게 설명할 기회가 있을 것입니다.
댓글
댓글 쓰기