본문 바로가기
R프로그래밍

[R-studio 사용법, R 프로그래밍] 데이터 구조 개념 이해하기

by 데싸루나 2023. 4. 1.

데이터 구조는 R 프로그래밍을 할 때, R-studio에서 데이터를 효율적으로 저장하고 조작할 수 있도록 데이터를 구성하는 방법입니다. R에는 Vector(벡터), Matrix(행렬), List(리스트) 및 Data Frame(데이터 프레임)의 데이터 구조가 있습니다.
 

 

R-studio 사용법, R 프로그래밍 데이터 구조 개념 이해하기

 

R-studio사용법-R프로그래밍-데이터구조
R-studio사용법-R프로그래밍-데이터구조
  • Vector(벡터)는 R에서 가장 간단한 데이터 구조로, 숫자, 문자, 논리 등 모든 유형을 원자로 가질 수 있는 1차원 배열 형태의 데이터 구조입니다. 다만 하나의 벡터 안에는 같은 데이터 타입의 데이터로만 구성될 수 있습니다. (숫자는 숫자끼리, 문자는 문자끼리)
  • Matrix(행렬)은 2차원 배열입니다. 흔히 많이 쓰는 표 형태의 행과 열 구조를 가진 데이터를 표현하는 데 자주 사용됩니다. 다만 같은 데이터타입의 데이터로만 구성될 수 있습니다. 
  • Array(배열)은 n차원의 데이터 구조입니다. 그리고 같은 데이터 타입의 데이터로만 구성될 수 있습니다.
  • List (리스트)는 1차원의 데이터 구조도 가능하고, n차원의 데이터 구조도 가능합니다. 그리고 서로 다른 데이터 타입의 데이터들이 묶일 수 있는 데이터 구조입니다. 
  • Data Frame (데이터 프레임)은 서로 다른 데이터들을 함께 담을 수 있는 테이블 형태의 데이터 구조입니다. 행과 열의 개념을 가지기 때문에 데이터 분석시 가장 유용하게 사용되는 데이터 구조입니다. 

R 프로그래밍 - Vector(벡터) 알아보기(코드 예제)

숫자형 벡터(Numeric Vector)

# 숫자형 벡터 생성
a <- c(1, 2, 3)
class(a) # [1] "numeric"

# 숫자형 벡터 인덱싱
a[2] # [1] 2

# 숫자형 벡터 연산
b <- a * 2
b # [1] 2 4 6

 

문자형 벡터(Character Vector)

# 문자열 벡터 생성
a <- c("apple", "banana", "cherry")
class(a) # [1] "character"

# 문자열 벡터 인덱싱
a[2] # [1] "banana"

# 문자열 벡터 연산
b <- paste(a, "is a fruit.")
b # [1] "apple is a fruit."   "banana is a fruit."  "cherry is a fruit."

 

 

논리형 벡터(Logical Vector)

# 논리형 벡터 생성
a <- c(TRUE, FALSE, TRUE)
class(a) # [1] "logical"

# 논리형 벡터 인덱싱
a[2] # [1] FALSE

# 논리형 벡터 연산
b <- !a
b # [1] FALSE  TRUE FALSE

 

팩터(Factor)

# 팩터 생성
a <- factor(c("male", "female", "male", "male", "female"))
class(a) # [1] "factor"
levels(a) # [1] "female" "male"

# 팩터 인덱싱
a[2] # [1] female
levels(a[2]) # [1] "female" "male"

# 팩터 연산
b <- table(a)
b # a
  female    male 
      2       3

 

 

R 프로그래밍 - Matrix(행렬, 매트릭스) 알아보기(코드 예제)

# 매트릭스 생성
m <- matrix(1:9, nrow=3, ncol=3)
m
#      [,1] [,2] [,3]
# [1,]    1    4    7
# [2,]    2    5    8
# [3,]    3    6    9

# 매트릭스 인덱싱
m[1,2] # [1] 4
m[2,] # [1] 2 5 8
m[,3] # [1] 7 8 9

# 매트릭스 조작
m[2,3] <- 10
m[,4] <- c(11, 12, 13)
m
#      [,1] [,2] [,3] [,4]
# [1,]    1    4    7   11
# [2,]    2    5   10   12
# [3,]    3    6    9   13

 

R 프로그래밍 - Array (배열) 알아보기(코드 예제)

# 3차원 배열 생성
my_array <- array(1:27, dim = c(3,3,3))
print(my_array)

# 출력 결과
, , 1

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

, , 2

     [,1] [,2] [,3]
[1,]   10   13   16
[2,]   11   14   17
[3,]   12   15   18

, , 3

     [,1] [,2] [,3]
[1,]   19   22   25
[2,]   20   23   26
[3,]   21   24   27


# 3차원 배열 인덱싱
print(my_array[2,3,1])

# 출력 결과
[1] 8


# 3차원 배열 조작
new_array <- my_array * 2
print(new_array)

# 출력 결과
, , 1

     [,1] [,2] [,3]
[1,]    2    8   14
[2,]    4   10   16
[3,]    6   12   18

, , 2

     [,1] [,2] [,3]
[1,]   20   26   32
[2,]   22   28   34
[3,]   24   30   36

, , 3

     [,1] [,2] [,3]
[1,]   38   44   50
[2,]   40   46   52
[3,]   42   48   54

 

R 프로그래밍 - List (리스트) 알아보기(코드 예제)

 

# 리스트 생성
a <- list(name = "John", age = 30, gender = "male", married = TRUE)
class(a) # [1] "list"

# 리스트 인덱싱
a$name # [1] "John"
a[[1]] # [1] "John"
a[[2]] # [1] 30


# 리스트 조작
a$age <- 31
a$height <- 175
a

 

 

R 프로그래밍 -Data Frame (데이터프레임) 알아보기(코드 예제)

 

# 데이터프레임 생성
df <- data.frame(name=c("John", "Mike", "Kate"),
                 age=c(25, 30, 35),
                 height=c(170.2, 175.5, 162.3))
df
#   name age height
# 1 John  25  170.2
# 2 Mike  30  175.5
# 3 Kate  35  162.3

# 데이터프레임 인덱싱
df[1,] # 첫 번째 행
#   name age height
# 1 John  25  170.2
df[,2] # 두 번째 열
# [1] 25 30 35
df$name # name 열
# [1] "John" "Mike" "Kate"

# 데이터프레임 조작
df$weight <- c(70.5, 80.2, 65.7) # weight 열 추가
df
#   name age height weight
# 1 John  25  170.2   70.5
# 2 Mike  30  175.5   80.2
# 3 Kate  35  162.3   65.7
df$age[df$age > 28] # age 열에서 28보다 큰 값
# [1] 30 35

 

댓글