Data Analysis/R

[R] 데이터 구조

AubreyJeong 2021. 6. 8. 10:00

R 데이터 구조

  • 단일형 : 숫자형 또는 문자형과 같이 한가지 데이터 형태로만 구성된 데이터
  • 다중형 : 여러가지 데이터 형태로 구성된 데이터
구분 1차원 2차원 n차원
단일형 벡터 행렬 배열
다중형 리스트 데이터 프레임  

 

1. 벡터 vector

데이터 구조의 가장 기본으로 1차원으로 구성되어 있는 데이터구조

형태가 다른 원소를 담을 경우엔 자료형 강제 변환coercion이 수행된다.

ex_vector1 <- c(-1, 0, 1) 		# 숫자형 벡터

str(ex_vector1) 				# 변수의 속성 확인
length(ex_vector)				# 벡터 ex_vector1의 길이(=들어간 값의 개수)

ex_vector2 <- c("Hello", "Hi")	# 문자형 벡터 
ex_vector3 <- c("1", "2")		# 문자형 벡터 (""로 감싸면 전부 문자형)

str(ex_vector2)					# 변수의 속성 확인
str(ex_vector3)					# 변수의 속성 확인
length(ex_vector2)				# 벡터 ex_vector2의 길이
length(ex_vector3)				# 벡터 ex_vector3의 길이

 

2. 행렬 Matrix

# matrix(변수명, nrow=행 개수, ncol=열개수)
x <- c(1,2,3,4,5,6)
matrix(x, nrow=2, ncol=3)			# 변수 x를 2*3행렬로 구성(위에서 아래로)
matrix(x, nrow=2, ncol=3, byrow=T)	# 변수 x를 2*3행렬로 구성(왼쪽에서 오른쪽으로)

 

3. 배열 Array

행렬을 n차원으로 확대한 구조로 단일형 데이터

# array(변수명, dim=c(행 수, 열 수, 차원 수))
y <- c(1,2,3,4,5,6)
array(y, dim=c(2,2,3))    # 변수 y를 2*2행렬, 3차원 배열로 구성

 

4. 리스트 List

벡터와 유사하게 순서화된 객체들을 포함하는 자료형. 단, 리스트는 여러 종류의 데이터 객체를 포함할 수 있다.

벡터와 같이 인덱스 번호로 내부 데이터 접근이 가능하다. 단, []로 접근하면 해당 원소가 들어있는 '리스트'를 리턴하며, 화면에는 해당 리스트의 원소도 출력된다. 따라서 [[]]을 사용해야 해당 원소 자체에 접근한다.

 

리스트에 저장된 데이터는 인덱스 또는 키를 사용해 접근할 수 있다.

  • x$key : 리스트 x에서 키 값 key에 해당하는 값
  • x[[n]] : 리스트 x에서 n번째에 저장된 값
  • x[n] : 리스트 x에서 n번째 데이터의 서브리스트
list1<- list(1, "g", c(12,34))
list1
str(list1)            # 변수의 속성 확인

list1[3]              # list1에서 3번째 데이터(=벡터)의 서브리스트
length(list1[3])

list1[[3]]            # list1에서 3번째에 저장된 '값'들을 출력
length(list1[[3]])

list1[[3]][1]         # list1에서 3번째 데이터(=벡터)가 가지고 있는 첫번째 값 출력 

 

5. 데이터 프레임 Data Frame

 

다양한 데이터 타입이 조합된 이차원의 배열.

행렬과 유사하지만 각 열이 다른 데이터 타입을 가질 수 있다. + 데이터 프레임의 각 열에는 변수명이 있어야 한다.

- 데이터 프레임으로 데이터 세트를 구성할 때는 각 변수에 들어 있는 관측치의 개수가 동일해야 data.frame() 함수를 적용할 수 있다.

RDBMS 테이블과 유사 → 실제로 SQL 쿼리문을 기반으로 data frame 조작하는 package도 존재

  • names() : 데이터 프레임의 header
  • summary() : 각 열의 max_value, min value, mean 을 비롯한 summary statistic 요약통계 정보 → EDA : 탐색적 데이터 분석
# data.frame(변수명1, 변수명2, ...., 변수명n)
dataframe_ex <- data.frame(ID=c("10001","10002","10003", "10004"), Score = c(90,21,70,80))
dataframe_ex

names(dataframe_ex)                   # 데이터 프레임 각 열의 이름
dim(dataframe_ex)                     # 데이터 프레임 차원 
str(dataframe_ex)                     # 데이터 프레임 변수 속성 
summary(dataframe_ex)                 # 데이터 요약 
nrow(dataframe_ex)                    # 행의 개수 
ncol(dataframe_ex)                    # 열의 개수

dataframe_ex$ID                       # 열 선택에는 $기호 사용
dataframe_ex[dataframe_ex$Score>=60,] 

 

99. 데이터 세트 삭제하기

remove(ex_vector2)		# ex_vector2 벡터 삭제
rm(ex_vector3)			# ex_vector3 벡터 삭제