본문 바로가기
R

R 기초문법 - R 데이터 타입, 구조 정리

by d22pinsights 2024. 7. 6.

데이터 타입 = 변수 타입 = 자료형

함수에 따라 적용 가능한 변수타입이 다르기 때문에, 분석 전에 타입을 확인해야함

 

변수 종류

1) 연속 변수: numeric 타입

  • 연속 변수는 숫자형 데이터로 표현되며, 값이 연속적이며 크기를 의미
  • ex) 나이, 키, 몸무게, 매출액 등
  • 연속 변수는 수학적 연산(더하기, 빼기, 곱하기 등)이 가능

2) 범주 변수: factor 타입

  • 범주 변수는 이산적인 값을 가지며, 특정 범주나 집단을 나타냄
  • 값이 대상을 분류하는 의미.
  • ex) 성별(남/여), 혈액형(A/B/AB/O형), 직업(의사/교사/회사원 등)
  • 범주 변수는 수학적 연산이 불가능
var1 <- c(1,2,3,1,2)          # numeric 변수 생성
var2 <- factor(c(1,2,3,1,2))  # factor 변수 생성

var1  # numeric 변수 출력
## [1] 1 2 3 1 2
var2  # factor 변수 출력
## [1] 1 2 3 1 2
## Levels: 1 2 3

numeric 변수 : c()

factor 변수 : factor()

 

변수 타입 확인하기 :  class()
class(var1)
## [1] "numeric"
class(var2)
## [1] "factor"

 

factor 변수의 구성 범주 확인 : levels
var <- factor(c("a","b","b","c"))  #문자로 구성된 factor 변수 만들기
levels(var)
##[1] "a" "b" "c"

 

변수 타입
Data Type 의미
numeric 실수 1, 2.5
integer 정수 1, 5, 7
complex 복소수 5+4i
character 문자 "female", "123", "yes"
logical 논리 TRUE, FALSE, T,F
factor 범주 A, B, AB, O
Date 날짜 "2024-07-05", "2024/07/05"

 

logical 논리에서 "TRUE", "FALSE" 는 대문자로 쓰기

 

변수 타입을 강제로 바꿀 수 있는데 이를 변환 함수라고 함

함수 기능
as.numeric() numeric으로 변환
as.factor() factor로 변환
as.character() character로 변환
as,Date() Date로 변환
as.data.frame() Data Frame으로 변환

 

처음에 말했듯이 함수에 따라 적용가능한 변수타입이 있기 때문에 알아두면 좋음!

 


데이터구조

 

  1. 벡터 : 하나의 값, 여러개의 값, 같은 데이터 타입
 a <- 3
 a
##[1] 3
 b <- c(1,2,3,4,5)
 b
##[1] 1 2 3 4 5
 c <- "hi"
 c
##[1] "hi"
 d <- c("a","b","c","a")
 d
##[1] "a" "b" "c" "a"
 class(a)
##[1] "numeric"
 class(b)
##[1] "numeric"
 class(c)
##[1] "character"
 class(d)
##[1] "character"

a와 b는 numeric, 숫자로 구성

c와 d는 character: 문자로 구성됨

 

2. 데이터 프레임

행과 열로 구성된 2차원, 열들이 서로 다른 데이터 타입 가질 수 있음

df <- data.frame(var1 = c(1,2,3), #숫자벡터
 +                  var2 = c("a","b","c")) #문자벡터
 df  # 행이 3개고 열이 2개인 데이터프레임, 서로 다른 타입을 가진 열을 저장함
##  var1 var2
##1    1    a
##2    2    b
##3    3    c
 class(df)
##[1] "data.frame"
 class(df$var1)
##[1] "numeric"
 class(df$var2)
##[1] "character"

var1은 숫자, var2는 문자이지만 데이터 프레임으로 한번에 저장할 수 있음

 

3. 매트릭스

행과 열로 구성된 2차원, 같은 데이터 타입만 저장 가능

mx <- matrix(c(1:12), ncol = 4)
 mx
##     [,1] [,2] [,3] [,4]
##[1,]    1    4    7   10
##[2,]    2    5    8   11
##[3,]    3    6    9   12
class(mx)
##[1] "matrix" "array"

ncol  : 열의 개수를 지정해줌

 

4. 어레이

행과 열로 구성된 매트릭스가 여러 겹이 있는 구조

#1~18까지 만들건데, 행이 3개, 열이 6개, 층이 3개
ar <- array(1:18, dim = c(3,6,3))
ar
##, , 1     #1번째 층

##     [,1] [,2] [,3] [,4] [,5] [,6]
##[1,]    1    4    7   10   13   16
##[2,]    2    5    8   11   14   17
##[3,]    3    6    9   12   15   18

##, , 2   #2번째 층

##     [,1] [,2] [,3] [,4] [,5] [,6]
##[1,]    1    4    7   10   13   16
##[2,]    2    5    8   11   14   17
##[3,]    3    6    9   12   15   18

##, , 3   #3번째 층
 
##     [,1] [,2] [,3] [,4] [,5] [,6]
##[1,]    1    4    7   10   13   16
##[2,]    2    5    8   11   14   17
##[3,]    3    6    9   12   15   18

class(ar)
##[1] "array"

 

5. 리스트

모든 데이터 구조를 저장할 수 있음

ls <- list(list1 = a,
+            list2 = df,
+            list3 = mx,
+            list4 = ar)
ls
##$list1
##[1] 3

##$list2
##  var1 var2
##1    1    a
##2    2    b
##3    3    c

##$list3
##     [,1] [,2] [,3] [,4]
##[1,]    1    4    7   10
##[2,]    2    5    8   11
##[3,]    3    6    9   12

##$list4
##, , 1

##     [,1] [,2] [,3] [,4] [,5] [,6]
##[1,]    1    4    7   10   13   16
##[2,]    2    5    8   11   14   17
##[3,]    3    6    9   12   15   18

##, , 2

##     [,1] [,2] [,3] [,4] [,5] [,6]
##[1,]    1    4    7   10   13   16
##[2,]    2    5    8   11   14   17
##[3,]    3    6    9   12   15   18

##, , 3

##     [,1] [,2] [,3] [,4] [,5] [,6]
##[1,]    1    4    7   10   13   16
##[2,]    2    5    8   11   14   17
##[3,]    3    6    9   12   15   18


class(ls)
##[1] "list"

벡터, 데이터프레임, 매트릭스, 어레이 모두 저장 가능한게 어레이임

 

# 벡터를 꺼내서 사용하기
ls$list1
vec <- ls$list1
vec #꺼내서 새로운 변수에 저장가능함
# = a
# 데이터프레임을 꺼내서 사용하기
ls$list2
# 매트릭스를 꺼내서 사용하기
ls$list3
# 어레이를 꺼내서 사용하기
ls$list4

어레이의 요소를 꺼내서 따로 저장고 가능함!

 

정리!

데이터 구조 차원 특징
벡터(Vactor) 1차원 한 가지 변수 타입으로 구성
데이터 프레임(Data Frame) 2차원 다양한 변수 타입으로 구성
매트릭스(Matrix) 2차원 한 가지 변수 타입으로 구성
어레이(Arrary) 다차원 2차원 이상의 매트릭스
리스트(List) 다차원 서로 다른 데이터 구조 포함

 

 

후..오늘은 여기까지 안녕~

가독성이 떨어지는 것 같은데 고민을 해봐야겠다