-
[R기초] 데이터 단위 위계 한 방 정리(스칼라, 벡터, 요인, 행렬, 배열, 데이터프레임, 리스트)R 통계/R 기초 2021. 9. 11. 07:22728x90
R에서 사용되는 데이터 형태가 다양했지만, 머릿속에 혼재되어있었다.
개별적인 의미를 정리한 블로그는 많았지만,
이들을 구조화하고 차이를 발힌 글은 잘 보지 못했다.
각각의 내용의 차이점을 요약하면 다음과 같았다.
요약
> 각 데이터 단위의 위계를 정리하면 다음과 같다.
데이터 구조 위계 (https://kaestory.tistory.com/) 1. 스칼라 (Scalar)
> 하나의 값으로 대부분 언어에서의 가장 최소 단위
> 통계 분석이 목적인 R에서는 스칼라 개념을 사용하지 않으며, 벡터를 최소단위로 계산한다.
> 아래의 예시에서, 1이라는 하나의 Scalar) 값도 R에서는 하나의 벡터(Vector)로 인식함을 알 수 있다.
<입력> is(1) <출력> [1] "numeric" "vector"
2. 벡터 (Vetcor)
> R에서 사용되는 기본 단위로, 1차원 자료구조로, 동일한 자료형으로 구성되어야 한다.
> 아래의 예시에서, 백터 내에, 수치형, 문자형, 논리형을 같이 넣자, 모두 "문자형" 벡터로 변환되었다.
<입력> Vector_A <- c(1, 2, "가", T) is(Vector_A) <출력> [1] "character" "vector" "data.frameRowLabels" [4] "SuperClassMethod"
3. 요인(Factor)
> 백터와 유사하나, 범주 구분을 위해 사용되는 좀 더 특수한 개념으로 볼 수 있다.
> 아래의 예시에서 A를 요인으로 변환할 수 있었으며, 요인도 여전히 벡터도 될 수 있음을 알 수 있다.
<입력1> A <- c(1,2,1,1,2,1,2) is(A) <출력1> [1] "numeric" "vector" <입력2> A <- factor(A, levels = c(1,2), labels = c("남","여")) is(A) <출력2> [1] "factor" "integer" "oldClass" [4] "double" "numeric" "vector" [7] "data.frameRowLabels"
4. 행렬 (Matrix)
> 2개 이상의 벡터가 행열 형태로 쌓인것으로 각 행열의 자료형은 동일해야한다.
> rbind: 벡터를 행(Row) 방향으로 묶어줌
> cbind: 벡터를 열(Column) 방향으로 묶어줌
> 아래 예시에서, 자료형은 행렬이자 배열(행렬을 포함하는 개념)이자, 벡터가 된다.
<입력1> A <-c(1, 2, 3, 4, 5) B <-c(2, 4, 6, 8, 10) R <- rbind(A,B) C <- cbind(A,B) print(R) is(R) <출력1> [,1] [,2] [,3] [,4] [,5] A 1 2 3 4 5 B 2 4 6 8 10 [1] "matrix" "array" "structure" "vector" <입력2> print(C) is(C) <출력2> A B [1,] 1 2 [2,] 2 4 [3,] 3 6 [4,] 4 8 [5,] 5 10 [1] "matrix" "array" "structure" "vector"
5. 배열 (Array)
> 행렬이 2차원(행x열)만 표현하였다면, 배열은 3차원 이상의 자료형을 나타내는 자료 구조이다.
> 행렬과 마찬가지로, 동일한 자료형끼리만 뭉칠 수 있다.
> 앞서 사용한 예시를 활용해 아래와 같이 배열을 만들어 보았다.
<입력> A <-c(1, 2, 3, 4, 5) B <-c(2, 4, 6, 8, 10) R <- rbind(A,B) C <- cbind(A,B) New <- array(c(R, C)) print(New) is(New) <출력> [1] 1 2 2 4 3 6 4 8 5 10 1 2 3 4 5 2 4 6 8 10 [1] "array" "structure" "vector"
6. 데이터 프레임 (Dataframe)
> 2차원(행*열)로 구성되어 있으며, 자료형이 다른 벡터들을 한번에 묶을 수 있는 단위이다.
> 엑셀과 유사한 형태로 분석에서 가장 많이 사용되는 형태이다.
<입력> gender <- c(1,2,1,2,1,2) height <- c(170, 165, 182, 173, 160, 159) height_by_gender <- data.frame(cbind(gender, height)) View(height_by_gender) is(height_by_gender) <출력> gender height 1 1 170 2 2 165 3 1 182 4 2 173 5 1 160 6 1 159 [1] "data.frame" "list" "oldClass" "vector"
7. 리스트 (List)
> 상기 모든 자료형을 묶을 수 있는 데이터 단위이다.
> 아래와 같이 데이터프레임과 같이 자료형이 달라도 자료형을 변환하지 않은 채 묶을 수 있다.
<입력1> A <- c(1,2, "가") B <- list(1,2, "가") is(A) str(A) <출력1> [1] "character" "vector" "data.frameRowLabels" [4] "SuperClassMethod" chr [1:3] "1" "2" "가" <입력2> is(B) str(B) <출력2> [1] "list" "vector" List of 3 $ : num 1 $ : num 2 $ : chr "가"
728x90'R 통계 > R 기초' 카테고리의 다른 글
[R기초] split 함수로 데이터를 나누고, apply함수로 기술통계 비교하기 (0) 2021.09.16 [R기초] 엑셀의 vlookup과 유사한 함수, merge를 알아보자 (0) 2021.09.15 [R기초] subset 함수를 활용해 원하는 데이터만 선택하자 (0) 2021.09.14 [R기초] colnames 함수를 활용해 변수명 변경하기 (0) 2021.09.13 [R 기초] 데이터의 형태 (Character, Numeric, Integer, Complex, Logical) (0) 2021.09.10