본문 바로가기
지식/R 프로그래밍

R 프로그래밍 기초_R 자료형과 데이터 구조

by 엉클윤 2021. 1. 20.

R 프로그래밍 관련 다른 포스팅

2021/01/06 - [R 프로그래밍] - R 프로그래밍 기초_ R 기본 개념 & 설치

2021/01/06 - [R 프로그래밍] - R 프로그래밍 기초_R 스튜디오 설치 및 기본 셋팅

2021/01/09 - [R 프로그래밍] - R 프로그래밍 기초_기본 인터페이스

2021/01/13 - [R 프로그래밍] - R 프로그래밍 기초_패키지 (Package)

2021/01/18 - [R 프로그래밍] - R 프로그래밍 기초_그래프 그리기 의 모든것

2021/01/19 - [R 프로그래밍] - R 프로그래밍 기초_기본 R 명령어 모음

2021/01/20 - [R 프로그래밍] - R 프로그래밍 기초_R 자료형과 데이터 구조

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R 언어를 이해하기 위해서는 R에서 데이터를 어떻게 다루는지 데이터의 종류와 구조에 대해서 기본적으로 알고 있어야 한다.

이번 포스팅에서는 R에서 사용하는 Data type(자료형)Data structure(데이터 구조) 에 대해서 알아보도록 하겠다.

언뜻 듣기에는 비슷할 것 같기도 하고, data type과 data structure를 모두 자료형이라 혼용해서 칭하기도 하지만, 이 둘은 전혀 다른 개념들이다.

 

Data type 이란?

Data type변수를 어떠한 방식으로 인식 할 것인가 하는 것이다.

 

R에서 인식하는 Data type에는

 

  1. Numeric - 숫자형 데이터로 integer, single, double 등이 numeric data에 해당된다.

  2. Character - 문자형 데이터, 보통 큰 따옴표 [" "] 속에 들어있는 형태로 입력/출력 된다. 

  3. Logical - 논리형 데이터, TRUE 또는 FULSE 로 나타낼 수 있는 데이터, Boolean이라고도 부른다.

  4. Complex - 여러 data type의 복합체를 의미한다. 예를들어 숫자형과 문자형을 통시에 포함하는 변수가 이에 해당                        한다. 

  5. Raw data - 외부에서 가져오는 가공되지않은 데이터. 엑셀이나 txt파일과 같은 외부데이터를 가져와서 변수로 사용                      하는경우에 해당한다.

 

 


 

Data structure 란?

Data structure데이터들이 어떠한 형태로 존재하는가 이다.

 

R에서 사용하는 Data structure들에 대해서 하나씩 알아보도록 하겠다.

 

 

 1. Vector

R에서 가장 기본이 되는 데이터 구조이다. 1차원에 1개이상의 자료를 가지는 변수. 즉, 한 줄의 데이터셋이라고 생각 할 수 있다. R을 공부하는데 가장 중요한 개념 중 하나는 'R에서 모든 데이터는 벡터이다' 는 것이다. 이는 R에서 데이터를 처리하는데 많은 장점을 제공한다. 다른 언어에서는 한개의 값이 있으면 스칼라이지만 R에서는 1개의 정보만을 가지는 벡터로 정의된다. 결국 벡터가 R의 모든 데이터의 기본 단위가 되는 셈 

c1이라는 변수에 "c"라는 알파벳 하나만을 정의해 넣었다.

그리고 is.vector( )함수를 이용해 c1이 벡터인지 물어봤더니 TRUE를 출력했다.

 

 

 

 2. matrix

먼저 matrix는 우리가 흔히 알고있는 행열에 해당한다. 즉, 행(rows) 과 열(columns)이 있는 2차원의 데이터셋이라고 생각할 수 있다.

matrix에서 행, 열은 항상 같은 길이를 가져야 하며 같은 data type으로 구성된다.

m1 이라는 변수에 TRUE 또는 FALSE만을 가지는 matrix를 정의해서 넣었다.

그리고 typeof( )함수를 이용해 m1의 data type을 물어보니 논리형("logical") 이 출력되었다. 

 

 

이번에는 m2 이라는 변수에 숫자와 논리형을 모두 가지는 matrix를 정의해서 넣었다.

그리고 typeof( )를 이용해 보니 이번에는 논리형은 무시되고 숫자형 ("double") 이라고만 출력되었다.

 

 

참고로 matrix의 열에는 이름을 붙일 수 없고 index number로 다뤄진다.

m2 데이터에서 1행 2열의 데이터를 불러오고 싶다면 m2[1, 2] 라고 index number를 입력하면 된다.

 

 

 3. array

array는 matrix와 모든 점에서 같으면서 3차원이라고 생각하면 된다. 데이터셋에 rows, columns 외에 tables라는 차원이 추가된다.

따라서 array 데이터를 정의할 때는 rows, columns, tables 각 차원의 개수를 지정해서 정의할 수 있다.

a1이라는 변수에 1부터 24까지의 숫자를 [행, 열, 테이블] 의 개수가 [4, 3, 2] 가 되도록 정의해서 넣었다.

a1을 출력하니 위와 같이 [테이블 1]에 1~12까지의 숫자, [테이블 2]에 13~24까지의 숫자를 가지도록 정의된 것을 알 수 있었다. 

 

 

 

 4. data frame

data frame은 아마 R에서 가장 많이 보게될 형태의 데이터일 것이다.

이는 data frame이 우리가 엑셀에서 많이 작업하는 spreadsheet의 형태이기 때문이다.

matrix나 array가 한 종류의 data type만을 벡터를 가질 수 있는 반면 data frame은 다양한 종류의 자료형을 가질 수 있다. 다만 각 프레임(행과 열)은 같은 길이를 가져야 한다

먼저, 세가지 data type을 가지는 변수 vNumeric, vCharacter, vLogical 을 각각 정의하였다.

그리고 df라는 변수에 위에서 정의한 변수들을 as.data.frame(  ) 을 이용하여 data frame으로 묶었다.

<as.~  >명령어는 변수를 특정한 형태로 저장하고자 할 떄 사용한다.

이를 사용하지 않고 그냥 정의하게되면 data frame이 아닌 matrix로 정의될 수 있다. 

 

 

 

 5. list

list는 가장 제약이 없는 데이터 형태이다. 말 그대로 아무거나 다 넣을 수 있고 어떠한 type이던 무제한으로 넣을 수 있다. 심지어 list 안에 list를 넣을 수도 있다.

3개의 다른 type과 다른 크기를 가지는 변수 d1, d2, d3을 정의하고, list를 이용하여 이들 모두를 포함하는 변수를 만들었다.

 

 

 

list안에 list를 넣어 아래와 같이 혼란한 변수를 만들수도 있다.

 

댓글