R 데이터타입
데이터타입에 대해 숙지하는 것은 R을 본격적으로 시작하기 전에 기초 및 기본이 되는 내용입니다.
길게 말고 간단명료하게 알아보도록 하겠습니다.
R에는 다음과 같은 데이터타입이 존재합니다.
-
스칼라(Scala)
-
벡터(Vector)
-
데이터프레임(Dataframe)
-
리스트(List)
-
행렬(Matrix)
-
배열(Array)
1. 스칼라(Scala)
데이터 구성요소가 하나인 데이터타입
"c" # 문자
$ [1] "c"
1 # 숫자
$ [1] 1
2. 벡터(Vector)
스칼라가 모이면 벡터라고 부릅니다.
여러 개의 스칼라를 하나의 벡터로 만들기 위해서 c(스칼라, 스칼라, 스칼라, …) 라는 명령어를 사용합니다.
"c" # 문자
$ [1] "c"
1 # 숫자
$ [1] 1
# 이렇게 하나씩 있는게 스칼라인데, 여러 개의 스칼라를 하나의 벡터로 구성한다.
c(“c”,1) 이라는 명령어를 통해 하나의 벡터를 만들어 봅시다.
c("c",1)
참고로 맨 앞에 있는 c는 벡터를 만들어주는 명령어이고, 요소에 “c” 와 1 이 있다는 뜻입니다.
$ [1] "c" "1"
다른 예제도 확인해봅시다.
c('a','b','c','d')
$ [1] "a" "b" "c" "d"
이처럼 'a', 'b' , 'c', 'd' 문자로 구성된 벡터를 만들 수 있습니다.
3. 데이터프레임(Dataframe)
벡터가 모이면 데이터프레임이 됩니다.
data.frame(벡터,벡터,벡터, …) 라는 함수를 사용하며 각 벡터는 데이터프레임의 열이 됩니다.
A <- c(1,2,3)
B <- c(5,6,7)
C <- c(8,9,0)
위의 내용에서 화살표를 기준으로 보았을 때, 왼쪽에 있는 데이터변수 명에 오른쪽의 내용을 할당해달라는 뜻입니다(데이터변수 명은 임의로 지정가능).
- 첫번째는 1,2,3 으로 구성된 벡터를 A 라는 변수에 할당
- 두번째는 5,6,7 으로 구성된 벡터를 B 라는 변수에 할당
- 세번째는 8,9,0 으로 구성된 벡터를 C 라는 변수에 할당
이때 데이터프레임을 만들어본다면,
result <- data.frame(A,B,C)
result
$ A B C
$ 1 1 5 8
$ 2 2 6 9
$ 3 3 7 0
data.frame() 함수를 이용하여 A,B,C 각 벡터를 데이터프레임으로 만들어주고 result 라는 데이터변수에 할당하였습니다.
4. 리스트(list)
데이터프레임은 하나의 데이터셋으로 구성할 수 있지만, 여러 개의 데이터셋이 있을경우 이를 list라는 장소에 담을 수 있습니다.
result2 <- data.frame(test1=c('a','c','f'), test2 = c('r','y','z'))
list(result,result2)
$ [[1]]
$ A B C
$ 1 1 5 8
$ 2 2 6 9
$ 3 3 7 0
$
$ [[2]]
$ test1 test2
$ 1 a r
$ 2 c y
$ 3 f z
위와 같이 데이터프레임을 각각 넣을 수도 있고 list에서는 데이터타입의 제한을 받지 않습니다.
예를 들어, 숫자형 벡터와 문자형 벡터를 같이 넣을 수 있습니다.
서로 다른 데이터 타입을 한 곳에 몰아넣을 수 있는 것이 리스트의 가장 큰 특징입니다.
result2 <- data.frame(test1=c('a','c','f'), test2 = c('r','y','z'))
list(result,result2,'a',1)
$ [[1]]
$ A B C
$ 1 1 5 8
$ 2 2 6 9
$ 3 3 7 0
$
$ [[2]]
$ test1 test2
$ 1 a r
$ 2 c y
$ 3 f z
$
$ [[3]]
$ [1] "a"
$
$ [[4]]
$ [1] 1
5. 행렬(Matrix)
행렬을 만드는 방법은 matrix(값,nrow 또는 ncol 지정) 입니다.
예를 들어,
matrix(1:10, ncol=5) 는 1부터 10의 값을 열이 5개인 행렬을 만드는 명령어이다.
matrix(1:10, nrow=2) 는 1부터 10의 값을 행이 2개인 행렬을 만드는 명렁어이다.
결국 위의 두 명령어는 같은 결과값이 나오는 것을 알 수 있습니다.
# 2 x 5 행렬을 만들어보자
matrix(1:10,ncol=5)
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 1 3 5 7 9
$ [2,] 2 4 6 8 10
6. 배열(array)
배열은 i x j 형태의 matrix 를 차곡차곡 쌓는다는 느낌으로 이해하면 쉽습니다.
예를 들어 위에서 2 x 5 의 행렬을 만들었는데 이 행렬의 구조로 n개를 쌓는다는 느낌이다.
배열을 만드는 방법은 array(값, c(행수, 열수, 몇 개의 요소?))
복잡해보여도 다음 예제를 보면 쉽게 이해할 수 있을 것이다.
# 2 x 5 행렬을 10개 만들어보자
array(1:100,c(2,5,10))
$ , , 1
$
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 1 3 5 7 9
$ [2,] 2 4 6 8 10
$
$ , , 2
$
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 11 13 15 17 19
$ [2,] 12 14 16 18 20
$
$ , , 3
$
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 21 23 25 27 29
$ [2,] 22 24 26 28 30
$
$ , , 4
$
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 31 33 35 37 39
$ [2,] 32 34 36 38 40
$
$ , , 5
$
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 41 43 45 47 49
$ [2,] 42 44 46 48 50
$
$ , , 6
$
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 51 53 55 57 59
$ [2,] 52 54 56 58 60
$
$ , , 7
$
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 61 63 65 67 69
$ [2,] 62 64 66 68 70
$
$ , , 8
$
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 71 73 75 77 79
$ [2,] 72 74 76 78 80
$
$ , , 9
$
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 81 83 85 87 89
$ [2,] 82 84 86 88 90
$
$ , , 10
$
$ [,1] [,2] [,3] [,4] [,5]
$ [1,] 91 93 95 97 99
$ [2,] 92 94 96 98 100
이상으로 포스팅 마치고 궁금한 점은 댓글로 남겨주세요!
'데이터 분석 > R 데이터 처리 & 분석' 카테고리의 다른 글
[R] subset 함수로 데이터 추출하기 (4) | 2020.01.18 |
---|---|
R 패키지 설치하기/불러오기 (0) | 2020.01.16 |
R 데이터셋을 행과 열별로 합치기(병합) (0) | 2020.01.15 |
R 데이터프레임(data.frame)의 모든 것(행추가,열추가,삭제) (0) | 2020.01.14 |
R 데이터 불러오기/파일 읽기 (0) | 2020.01.13 |